Oracle里有内建函数bin_to_num可以将二进制数转换为十进制数,但这个函数的入参是个数不定的0或1:
- SELECTBIN_TO_NUM(1,1,1,1,0,1,1)FROMDUAL;
有时候入参使用一个二进制字符串会更加方便,另外Oracle本身没有提供num_to_bin这样将十进制转换成二进制的函数,于是写了两个自定义函数,算法很简单,不过这次追求的是用最少的代码实现。
- CREATEORREPLACEFUNCTIONbin_to_num1(p_binstrVARCHAR2)RETURNNUMBER
- IS
- l_lenNUMBER:=LENGTH(p_binstr);
- r_numNUMBER:=0;
- BEGIN
- FORiIN1..l_lenLOOP
- IFSUBSTR(p_binstr,i,1)='1'THEN
- r_num:=r_num+POWER(2,l_len-i);
- ENDIF;
- ENDLOOP;
- RETURNr_num;
- ENDbin_to_num1;
- /
- SELECTbin_to_num1('1111011')FROMDUAL;
- CREATEORREPLACEFUNCTIONnum_to_bin(p_numNUMBER)RETURNVARCHAR2
- IS
- r_binstrVARCHAR2(32767);
- l_numNUMBER:=p_num;
- BEGIN
- WHILEl_num!=0LOOP
- r_binstr:=TO_CHAR(MOD(l_num,2))||r_binstr;
- l_num:=TRUNC(l_num/2);
- ENDLOOP;
- RETURNr_binstr;
- ENDnum_to_bin;
- /
- SELECTnum_to_bin(123)FROMDUAL;
分享到:
相关推荐
二进制 八进制 十进制 十六进制 相互转换 jar 含源代码 运行前安装JRE先,下载地址: http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jre-6u29-windows-i586.exe 本程序用Java编写,适合java爱好者使用
本文将详细解释如何使用一条SQL语句在Oracle中实现二进制、八进制和十六进制到十进制的转换,并探讨这些转换背后的逻辑。 首先,我们来看二进制到十进制的转换。二进制系统只有两个数字,0和1,其基数是2。在提供的...
在Oracle数据库中,有时我们需要对数字进行不同进制之间的转换,比如从二进制、八进制或十六进制转换为十进制。这在处理二进制数据、存储编码或者解析特定格式的数据时非常有用。Oracle提供了一种利用SQL语句实现...
常见的进制有二进制(2进制)、八进制(8进制)、十进制(10进制)和十六进制(16进制)。而在某些特殊应用场景下,也会使用到非常规进制,如本例中的34进制。 #### 34进制定义 34进制是一种非常规的进位计数系统,...
- **源码、反码、补码**:十进制数转换为二进制时,正数的三种表示方式相同;负数则有所不同。 - **源码**:直接转换得到的二进制数。 - **反码**:源码取反。 - **补码**:反码加一。 - **8/16/32位二进制数**:...
可以创建一个自定义函数将十进制数转换为二进制字符串。 - **函数定义**: 自定义函数`DECTOBIN` - **SQL语句**: ```sql CREATE OR REPLACE FUNCTION DECTOBIN(N IN INTEGER) RETURN VARCHAR2 IS vQuotient ...
在进行十进制到二进制的转换时,可以通过不断地将十进制数除以2并记录余数的方式进行,而二进制转换为十进制则通过将二进制数的每一位乘以2的相应次幂再求和得到。二进制与八进制或十六进制的转换相对简单,每三位二...
Oracle Text则能够支持大量的二进制文档格式。 2. **效率**:模式匹配方法需要逐词比较用户检索词汇与文档内容,对于大量文档或复杂条件下的检索非常耗时。而Oracle Text仅需检索文本索引,效率显著提高。 3. **...
在Oracle数据库中,Blob是一种用来存储二进制数据的数据类型,比如图像、音频或视频文件等。本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在...
6. **decimal**: 存储十进制数,如`decimal(9)`,在Oracle中对应`NUMBER(18)`。 7. **float**: 浮点数类型,在SQL Server中`float(8)`对应Oracle中的`BINARY_DOUBLE`。 8. **image**: 用于存储图像或其他二进制大...
16. 十进制转换二进制:十进制数59转换为二进制是110011。 17. 汉字国标GB 2312-80:lKB(1024字节)可以存储256个汉字的内码,因为每个汉字占用两个字节。 18. 系统软件定义:Oracle数据库系统、FORTRAN编译系统...
1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字。例如,ASCII('A')返回65,ASCII('a')返回97。 2. CHR函数:CHR函数根据提供的整数返回对应的字符。例如,CHR(65)返回'A',CHR(54740)可能...
1. 不同基数间的转换:例如,将二进制、八进制、十进制和十六进制数值相互转换。 2. 浮点与整数转换:支持单精度(32位)和双精度(64位)浮点数与整数之间的转换。 3. 数值格式化:根据需要调整数值的显示精度,...
##### 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 - **...
6. **十进制与十六进制转换**:Oracle提供了`TO_NUMBER`和`TO_CHAR`函数进行数值格式的转换,而`HEXTORAW`和`RAWTOHEX`用于十六进制字符串与二进制数据间的转换。 7. **SYS_CONTEXT的使用**:`SYS_CONTEXT`函数用于...
例如,BITAND(5, 3)将返回它们的按位与结果,即1(二进制表示:5是101,3是011,按位与后是001)。 八、分组和排序函数 RANK、DENSE_RANK和ROW_NUMBER可以为每行分配一个唯一的排名,ORDER BY用于排序结果集,而...
5. 十六进制与十进制转换:十六进制数1AB转换为十进制数是112,同样采用按权展开的方法。 6. 汉字编码:汉字机码是国际码加上8080H得到的,所以国际码5650H的机码是D6D0H。 7. 输入法类型:五笔型输入法是一种基于...
2. BIN_TO_NUM:将二进制数字转换为十进制数值。 3. CAST:这是一个通用的转换函数,可以用于在不同数据类型之间进行转换,如将数值转换为字符串,或反之。 4. CHAR_TO_ROWID:将字符形式的ROWID转换为ROWID数据类型...
9. 二进制与十进制转换:十进制数88转换为二进制是1011000。 10. 计算机软件系统:软件系统包括系统软件(如操作系统)和应用软件,如B选项所述。 11. ENIAC:ENIAC是1946年诞生的第一台电子计算机,采用电子管和...