`
king_tt
  • 浏览: 2234249 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle里二进制与十进制的相互转换

 
阅读更多

Oracle里有内建函数bin_to_num可以将二进制数转换为十进制数,但这个函数的入参是个数不定的0或1:

  1. SELECTBIN_TO_NUM(1,1,1,1,0,1,1)FROMDUAL;

有时候入参使用一个二进制字符串会更加方便,另外Oracle本身没有提供num_to_bin这样将十进制转换成二进制的函数,于是写了两个自定义函数,算法很简单,不过这次追求的是用最少的代码实现。

  1. CREATEORREPLACEFUNCTIONbin_to_num1(p_binstrVARCHAR2)RETURNNUMBER
  2. IS
  3. l_lenNUMBER:=LENGTH(p_binstr);
  4. r_numNUMBER:=0;
  5. BEGIN
  6. FORiIN1..l_lenLOOP
  7. IFSUBSTR(p_binstr,i,1)='1'THEN
  8. r_num:=r_num+POWER(2,l_len-i);
  9. ENDIF;
  10. ENDLOOP;
  11. RETURNr_num;
  12. ENDbin_to_num1;
  13. /
  1. SELECTbin_to_num1('1111011')FROMDUAL;
  1. CREATEORREPLACEFUNCTIONnum_to_bin(p_numNUMBER)RETURNVARCHAR2
  2. IS
  3. r_binstrVARCHAR2(32767);
  4. l_numNUMBER:=p_num;
  5. BEGIN
  6. WHILEl_num!=0LOOP
  7. r_binstr:=TO_CHAR(MOD(l_num,2))||r_binstr;
  8. l_num:=TRUNC(l_num/2);
  9. ENDLOOP;
  10. RETURNr_binstr;
  11. ENDnum_to_bin;
  12. /
  1. SELECTnum_to_bin(123)FROMDUAL;
分享到:
评论

相关推荐

    二进制、八进制、十进制、十六进制-相互转换.jar

    二进制 八进制 十进制 十六进制 相互转换 jar 含源代码 运行前安装JRE先,下载地址: http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jre-6u29-windows-i586.exe 本程序用Java编写,适合java爱好者使用

    用一条SQL 实现其它进制到十进制的转换

    本文将详细解释如何使用一条SQL语句在Oracle中实现二进制、八进制和十六进制到十进制的转换,并探讨这些转换背后的逻辑。 首先,我们来看二进制到十进制的转换。二进制系统只有两个数字,0和1,其基数是2。在提供的...

    Oracle中用SQL语句实现进制间互相转换

    在Oracle数据库中,有时我们需要对数字进行不同进制之间的转换,比如从二进制、八进制或十六进制转换为十进制。这在处理二进制数据、存储编码或者解析特定格式的数据时非常有用。Oracle提供了一种利用SQL语句实现...

    SQL脚本函数 34进制转换为10进制

    常见的进制有二进制(2进制)、八进制(8进制)、十进制(10进制)和十六进制(16进制)。而在某些特殊应用场景下,也会使用到非常规进制,如本例中的34进制。 #### 34进制定义 34进制是一种非常规的进位计数系统,...

    3 进制转换.docx

    - **源码、反码、补码**:十进制数转换为二进制时,正数的三种表示方式相同;负数则有所不同。 - **源码**:直接转换得到的二进制数。 - **反码**:源码取反。 - **补码**:反码加一。 - **8/16/32位二进制数**:...

    oracle位运算

    可以创建一个自定义函数将十进制数转换为二进制字符串。 - **函数定义**: 自定义函数`DECTOBIN` - **SQL语句**: ```sql CREATE OR REPLACE FUNCTION DECTOBIN(N IN INTEGER) RETURN VARCHAR2 IS vQuotient ...

    Oracle笔记

    在进行十进制到二进制的转换时,可以通过不断地将十进制数除以2并记录余数的方式进行,而二进制转换为十进制则通过将二进制数的每一位乘以2的相应次幂再求和得到。二进制与八进制或十六进制的转换相对简单,每三位二...

    基于Oracle的文献资料库全文检索技术

    Oracle Text则能够支持大量的二进制文档格式。 2. **效率**:模式匹配方法需要逐词比较用户检索词汇与文档内容,对于大量文档或复杂条件下的检索非常耗时。而Oracle Text仅需检索文本索引,效率显著提高。 3. **...

    oracle查询blob字段照片(jpeg) 像素大小sql

    在Oracle数据库中,Blob是一种用来存储二进制数据的数据类型,比如图像、音频或视频文件等。本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在...

    sql server 和oracle 中数据类型的区别

    6. **decimal**: 存储十进制数,如`decimal(9)`,在Oracle中对应`NUMBER(18)`。 7. **float**: 浮点数类型,在SQL Server中`float(8)`对应Oracle中的`BINARY_DOUBLE`。 8. **image**: 用于存储图像或其他二进制大...

    2012年9月计算机等级《一级MSOffice》真题试卷-中大网校2.pdf

    16. 十进制转换二进制:十进制数59转换为二进制是110011。 17. 汉字国标GB 2312-80:lKB(1024字节)可以存储256个汉字的内码,因为每个汉字占用两个字节。 18. 系统软件定义:Oracle数据库系统、FORTRAN编译系统...

    oracle函数大全 oracle函数大全

    1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字。例如,ASCII('A')返回65,ASCII('a')返回97。 2. CHR函数:CHR函数根据提供的整数返回对应的字符。例如,CHR(65)返回'A',CHR(54740)可能...

    自己做的数值转换工具,稍后上传数据库版(2012-10-14更新)

    1. 不同基数间的转换:例如,将二进制、八进制、十进制和十六进制数值相互转换。 2. 浮点与整数转换:支持单精度(32位)和双精度(64位)浮点数与整数之间的转换。 3. 数值格式化:根据需要调整数值的显示精度,...

    oracle db常用sql命令

    ##### 2.4 二进制到十进制转换 - **函数**: `BIN_TO_NUM(binary_digits...)` - **例子**: - `SELECT BIN_TO_NUM(1, 1, 0, 1) FROM DUAL;` 返回 13 - `SELECT BIN_TO_NUM(1, 1, 1, 0, 1) FROM DUAL;` 返回 29 - **...

    富士通内部培训ORACLE资料

    6. **十进制与十六进制转换**:Oracle提供了`TO_NUMBER`和`TO_CHAR`函数进行数值格式的转换,而`HEXTORAW`和`RAWTOHEX`用于十六进制字符串与二进制数据间的转换。 7. **SYS_CONTEXT的使用**:`SYS_CONTEXT`函数用于...

    Oracle内置SQL函数-分类整理大全

    例如,BITAND(5, 3)将返回它们的按位与结果,即1(二进制表示:5是101,3是011,按位与后是001)。 八、分组和排序函数 RANK、DENSE_RANK和ROW_NUMBER可以为每行分配一个唯一的排名,ORDER BY用于排序结果集,而...

    2014年全国计算机一级考试选择题试题与详细答案.doc

    5. 十六进制与十进制转换:十六进制数1AB转换为十进制数是112,同样采用按权展开的方法。 6. 汉字编码:汉字机码是国际码加上8080H得到的,所以国际码5650H的机码是D6D0H。 7. 输入法类型:五笔型输入法是一种基于...

    《Oracle Database编程指南》13-05:转换函数(Conversion Functions)

    2. BIN_TO_NUM:将二进制数字转换为十进制数值。 3. CAST:这是一个通用的转换函数,可以用于在不同数据类型之间进行转换,如将数值转换为字符串,或反之。 4. CHAR_TO_ROWID:将字符形式的ROWID转换为ROWID数据类型...

    一级计算机基础MSOffice分类模拟题189_真题-无答案.pdf

    9. 二进制与十进制转换:十进制数88转换为二进制是1011000。 10. 计算机软件系统:软件系统包括系统软件(如操作系统)和应用软件,如B选项所述。 11. ENIAC:ENIAC是1946年诞生的第一台电子计算机,采用电子管和...

Global site tag (gtag.js) - Google Analytics