返回顶部
首页 > 资讯 > 数据库 >Oralce中怎么将64进制转换为10进制
  • 907
分享到

Oralce中怎么将64进制转换为10进制

2024-04-02 19:04:59 907人浏览 泡泡鱼
摘要

Oralce中怎么将64进制转换为10进制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.实现函 Create Or R

Oralce中怎么将64进制转换为10进制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1.实现函

	Create Or Replace Function Sf_To_Deci(Str In Varchar2) Return Number As
	  Digit Number(32);
	Begin
	  Select Sum(Data)
		Into Digit
		From (Select (Case
					   When Ascii(Substr(Str, Rownum, 1)) = 43 Then
						62
					   When Ascii(Substr(Str, Rownum, 1)) = 47 Then
						63
					   When Ascii(Substr(Str, Rownum, 1)) Between 48 And 57 Then
						Ascii(Substr(Str, Rownum, 1)) + 4
					   When Ascii(Substr(Str, Rownum, 1)) Between 65 And 90 Then
						Ascii(Substr(Str, Rownum, 1)) - 65
					   When Ascii(Substr(Str, Rownum, 1)) Between 97 And 122 Then
						Ascii(Substr(Str, Rownum, 1)) - 71
					   Else
						Null
					 End) * Power(64, Length(Str) - Rownum) Data
				From Dual
			  Connect By Rownum <= Length(Str));
	  Return Digit;
	End;

2.64进制基数

A-Z(0-25),a-z(26-51),0-9(52-61),+(62),/(63)

3.实现原理

通过字符对应的ASCII值与实际表示的64进制值进行换算,以此来减少判断分类。换算关系如下:

A~Z   65~90	    -65	=    0~25
a~z   97~122	    -71	=    26~51
0~9   48~57	    +4	=    52~61
+    43       +19	=    62
/    47       +16	=     63

4.应用

rowid是用64进制来表示的,它的组成:数据对象号(6位)+相对文件号(3位)+数据块号(6位)+在数据块中的行数(3位)。

oracle包dbms_rowid中提供了使用rowid来查询其信息的函数,如下所示:

	select 
		rowid,
		dbms_rowid.rowid_object(rowid) object_id,	--51366 (AAAMim)AAFAAAAAMAAC 数据对象号
		dbms_rowid.rowid_relative_fno(rowid) file_id, --5 	AAAMim(AAF)AAAAAMAAC 相对文件号
		dbms_rowid.rowid_block_number(rowid) block_id, --12 	AAAMimAAF(AAAAAM)AAC 在第几个块
		dbms_rowid.rowid_row_number(rowid) num  	--2  	AAAMimAAFAAAAAM(AAC)在block中的行数
	from test where rowid = 'AAAMimAAFAAAAAMAAC';

下面这个函数对上面的函数改造后可以一次性返回这些信息

Create Or Replace Function Rowid_To_Info(Str In Varchar2) Return Varchar2 As
	  Digit Varchar2(32);
	  Rest  Varchar2(400);
	  Str_1 Varchar2(10) := Substr(Str, 1, 6);
	  Str_2 Varchar2(10) := Substr(Str, 7, 3);
	  Str_3 Varchar2(10) := Substr(Str, 10, 6);
	  Str_4 Varchar2(10) := Substr(Str, 16, 3);
	  Type Str_Varray Is Varray(4) Of Varchar2(10);
	  Type Rest_Varray Is Varray(4) Of Varchar2(20);
	  v_Str_Varray  Str_Varray := Str_Varray(Str_1, Str_2, Str_3, Str_4);
	  v_Rest_Varray Rest_Varray := Rest_Varray('Object_id:','File_id:','Block_id:','Block_num:');
	Begin
	  For i In 1 .. 4 Loop
		Select Sum(Data)
		  Into Digit
		  From (Select (Case
						 When Ascii(Substr(v_Str_Varray(i), Rownum, 1)) = 43 Then
						  62
						 When Ascii(Substr(v_Str_Varray(i), Rownum, 1)) = 47 Then
						  63
						 When Ascii(Substr(v_Str_Varray(i), Rownum, 1)) Between 48 And 57 Then
						  Ascii(Substr(v_Str_Varray(i), Rownum, 1)) + 4
						 When Ascii(Substr(v_Str_Varray(i), Rownum, 1)) Between 65 And 90 Then
						  Ascii(Substr(v_Str_Varray(i), Rownum, 1)) - 65
						 When Ascii(Substr(v_Str_Varray(i), Rownum, 1)) Between 97 And 122 Then
						  Ascii(Substr(v_Str_Varray(i), Rownum, 1)) - 71
						 Else
						  Null
					   End) * Power(64, Length(v_Str_Varray(i)) - Rownum) Data
				  From Dual
				Connect By Rownum <= Length(v_Str_Varray(i)));
		If i = 4 Then
		  Rest := Rest || v_Rest_Varray(i) || Digit;
		Else
		  Rest := Rest || v_Rest_Varray(i) || Digit || chr(9);
		End If;
	  
	  End Loop;
	  Return Rest;
	End;	

查询:

sql> select rowid_to_info('AAAMimAAFAAAAAMAAC')from dual;
	ROWID_TO_INFO('AAAMIMAAFAAAAAMAAC')
	--------------------------------------------------------------------------------
	Object_id:51366        File_id:5      Block_id:12    Block_num:2

看完上述内容,你们掌握Oralce中怎么将64进制转换为10进制的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: Oralce中怎么将64进制转换为10进制

本文链接: https://lsjlt.com/news/56388.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oralce中怎么将64进制转换为10进制
    Oralce中怎么将64进制转换为10进制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.实现函 Create Or R...
    99+
    2024-04-02
  • C# 中怎么将16进制转换为10进制
    这期内容当中小编将会给大家带来有关C# 中怎么将16进制转换为10进制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。//十进制转二进制Console.WriteLine(Convert.ToString(...
    99+
    2023-06-17
  • python怎么将10进制转换为2进制
    可以使用内置的bin()函数将十进制数转换为二进制表示。以下是一个示例:```pythondecimal = 10bina...
    99+
    2023-08-26
    python
  • php中怎么将17进制转为10进制
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,可以使用base_convert()函数来将17进制转为10进制。示例:将17进制的“2003001”转为10进制的“48289878”<php $s...
    99+
    2021-07-04
    php 进制转换 17进制转10进制
  • javascript中如何将2进制转为10进制
    这篇文章主要讲解了“javascript中如何将2进制转为10进制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中如何将2进制转为10进...
    99+
    2024-04-02
  • php中如何将17进制转为10进制
    本篇内容主要讲解“php中如何将17进制转为10进制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中如何将17进制转为10进制”吧!在php中,可以使用base_convert()函数来将...
    99+
    2023-06-29
  • 使用JavaScript怎么将10进制转换成36进制
    这期内容当中小编将会给大家带来有关使用JavaScript怎么将10进制转换成36进制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击...
    99+
    2023-06-14
  • python使用hex函数将10进制转换为16进制
    hex:hex()函数的作用:hex:hex()函数是将10进制整数转换成16进制,并以字符串形式表示。hex()函数语法:hex(x)在python中使用hex()函数将10进制转换为16...
    99+
    2024-04-02
  • php怎么将二进制转换为十进制
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php将二进制转换为十进制1、使用bindec()函数bindec($binary_string) 函数把二进制数$binary_string转换为十进制数。<p...
    99+
    2022-04-02
    php 进制转换 二进制转十进制
  • JavaScript中10进制数怎么转为16进制
    今天小编给大家分享一下JavaScript中10进制数怎么转为16进制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,...
    99+
    2024-04-02
  • php怎么将十六进制转换为十进制
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php将十六进制转换为十进制1、使用hexdec()函数hexdec(十六进制字符串) 函数可把十六进制数转换为十进制数。<php echo hexdec(&qu...
    99+
    2015-02-19
    php 进制转换 十六进制转十进制
  • 怎么在JavaScript中将二进制转换为十六进制
    怎么在JavaScript中将二进制转换为十六进制?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript中将二进制转为十六进制的方法var a=100;v...
    99+
    2023-06-14
  • php怎么将字母转为10进制数
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,可以利用ord()函数来将字母转为10进制数。示例:<php echo ord("a")."<...
    99+
    2021-12-11
    php 字母转为10进制数
  • php中16进制和10进制怎么相互转换
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑16进制和10进制的相互转换1、16进制数转10进制数可以使用 hexdec(十六进制字符串) 函数,它可把十六进制数转换为十进制数。<php echo hexd...
    99+
    2018-10-22
    php 16进制 10进制 进制转换
  • php如何将二进制转换为十进制
    本篇内容介绍了“php如何将二进制转换为十进制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php将二进制转换为十进制的方法:1、使用bin...
    99+
    2023-06-25
  • javascript如何将16进制的字符串转换为10进制整数hex
    这篇文章主要为大家展示了“javascript如何将16进制的字符串转换为10进制整数hex”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript如...
    99+
    2024-04-02
  • php如何将十六进制转换为十进制
    这篇文章主要介绍“php如何将十六进制转换为十进制”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何将十六进制转换为十进制”文章能帮助大家解决问题。php将十六进制转换为十进制的方法:1、使用...
    99+
    2023-06-29
  • oracle_16进制与10进制转换小示例
    --16进制转10进制,用to_number,里面的参数是16进制的数据,且参数用单引号括起 SQL> select to_number('ff','xx')...
    99+
    2024-04-02
  • php怎么将数据转换为十进制
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php将数据转换为十进制使用bindec()函数--二进制数转十进制数bindec() 函数把二进制数转换为十进制数。<php echo bindec("...
    99+
    2020-06-08
    php 进制转换 十进制
  • php怎么将十进制转换成十六进制
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php将十进制转换成十六进制1、使用dechex()函数dechex($number) 函数把十进制数$number转换为十六进制数。<php...
    99+
    2014-10-03
    php 十进制 十六进制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作