`

oracle 进制转换

阅读更多

1.16进制转换为10进制

可以通过to_number函数实现:

SQL> select to_number('19f','xxx') from dual;

TO_NUMBER('19F','XXX')
----------------------
                   415

SQL> select to_number('f','xx') from dual;

TO_NUMBER('F','XX')
-------------------
                 15

SQL>

2.10进制转换为16进制

我们可以通过to_char函数转换:

SQL> select to_char(123,'xx') from dual;

TO_CHA
------
 7b

SQL> select to_char(4567,'xxxx') from dual;

TO_CHAR(45
----------
 11d7

SQL> 

3.2进制转换为10进制

Oracle9i开始,提供函数bin_to_num进行2进制到10进制的转换:

 

SQL> select bin_to_num(1,1,0,1) a,bin_to_num(1,0) b from dual;

         A          B
---------- ----------
        13          2

SQL> select bin_to_num(1,1,1,0,1) from dual;

BIN_TO_NUM(1,1,1,0,1)
---------------------
                   29

       4.字符转换为ascii码  

SQL> select dump('汉',16) from dual;

DUMP('汉',16)
--------------------------------------------
Typ=96 Len=3: e6,b1,89
SQL> select dump('a',16) from dual;

DUMP('A',16)
--------------------------------
Typ=96 Len=1: 61

    5.ascii码转换为字符

SQL> select chr(to_number(61,'xxx')) from dual;

CHR(TO_N
--------
a
SQL> select chr(to_number('e6b189','xxxxxxxx')) from dual;

CHR(TO_N
--------
汉

SQL> 

   6 进制转换也可以通过自定义函数实现
   以下函数来自AskTom网站,是Tom给出的例子,供参考: 

create or replace function to_base( p_dec in number, p_base in number ) 
return varchar2
is
l_str varchar2(255) default NULL;
l_num number default p_dec;
l_hex varchar2(16) default '0123456789ABCDEF';
begin
if ( trunc(p_dec) <> p_dec OR p_dec < 0 ) then
raise PROGRAM_ERROR;
end if;
loop
l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str;
l_num := trunc( l_num/p_base );
exit when ( l_num = 0 );
end loop;
return l_str;
end to_base;
/


create or replace function to_dec
( p_str in varchar2, 
p_from_base in number default 16 ) return number
is
l_num number default 0;
l_hex varchar2(16) default '0123456789ABCDEF';
begin
for i in 1 .. length(p_str) loop
l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;
end loop;
return l_num;
end to_dec;
/
show errors

create or replace function to_hex( p_dec in number ) return varchar2
is
begin
return to_base( p_dec, 16 );
end to_hex;
/
create or replace function to_bin( p_dec in number ) return varchar2
is
begin
return to_base( p_dec, 2 );
end to_bin;
/
create or replace function to_oct( p_dec in number ) return varchar2
is
begin
return to_base( p_dec, 8 );
end to_oct;
/

  

 

分享到:
评论

相关推荐

    oracle 10进制转34进制 sql

    一个SQL脚本函数,10进制转换为34进制。34进制指以0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G、H、J、K、L、M、N、P、Q、R、S、T、U、V、W、X、Y、Z为基数做累加。

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

    ### SQL脚本函数:34进制转换为10进制 #### 背景介绍 在计算机科学领域,不同的进制系统被广泛应用于数据表示和处理中。常见的进制有二进制(2进制)、八进制(8进制)、十进制(10进制)和十六进制(16进制)。而...

    oracle_34进制转10进制_10进制转34进制_生成34进制最大编码

    实现10进制和34进制之间的转换,资源包含三个Oracle自定义函数,分别为: 34进制转换为10进制; 10进制转换为34进制; 生成34进制的最大编码; 欢迎提宝贵意见! 799192594@qq.com

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

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

    二进制、八进制、十进制、十六进制-相互转换.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。在提供的...

    3 进制转换.docx

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

    ORACLE 自动类型转换

    Oracle数据库支持多种数据类型,如数值型(NUMBER、INTEGER、BINARY_INTEGER等)、字符型(VARCHAR2、CHAR、CLOB等)、日期时间型(DATE、TIMESTAMP等)以及二进制数据类型(RAW、BLOB等)。在某些情况下,当不同...

    oracle(blob转换为clob)

    `UTL_RAW.CAST_TO_VARCHAR2`是Oracle提供的一个包中的函数,用于将RAW或BLOB类型的二进制数据转换为VARCHAR2字符串类型。这一步骤对于将BLOB转换为CLOB至关重要,因为CLOB本质上是一种字符数据类型,而不能直接与二...

    SqlServer与Oracle保存与读取图片二进制流

    本文将深入探讨如何在SQL Server 2008和Oracle数据库中保存和读取图片的二进制流。 1. **二进制流**:二进制流是一种数据表示方式,允许我们处理任何类型的原始字节数据,包括图片、音频文件或视频文件。在数据库中...

    Guid转换为oracle存储格式

    转换过程通常包括两个步骤:首先,将Guid字符串转换为16字节的二进制数组,因为Oracle的RAW类型可以存储这种数据;然后,将这个二进制数组以十六进制字符串的形式插入到Oracle的RAW字段中。 以下是C#中实现这个转换...

    springMvc+Oracle的图片转二进制流

    当涉及到图片处理时,有时需要将图片转换为二进制流,以便于在数据库中存储和检索。以下将详细讲解如何在Spring MVC和Oracle环境中实现这一过程。 首先,我们需要理解图片转二进制流的概念。在计算机系统中,图片...

    oracle字段类型转换的处理

    Oracle数据库支持多种数据类型,包括数值类型(如NUMBER、INTEGER、BINARY_FLOAT等)、字符类型(如VARCHAR2、CHAR、CLOB等)、日期时间类型(如DATE、TIMESTAMP等)以及二进制类型(如RAW、BLOB等)。在实际应用中...

    oracle Blob转换Clob

    ### Oracle Blob转换Clob #### 知识点一:Oracle Blob与Clob的基本概念 - **Blob (Binary Large Object)**:在Oracle数据库中,Blob类型用于存储大量的二进制数据,如图像、视频或文档等非结构化数据。 - **Clob ...

    图片以二进制保存到Oracle,取出并显示到页面示例

    本示例将探讨如何在Oracle数据库中以二进制格式存储图片,并随后从数据库中取出显示在网页上。Oracle数据库提供了BLOB(Binary Large Object)数据类型,专门用于存储大对象,如图像、音频文件或任何其他二进制数据...

    Oracle SQL 内置函数大全(3)

    2. **HEXTORAW(str)**:这个函数将由十六进制数字组成的字符串转换成二进制数据。它常用于处理二进制数据,例如在存储图像或文件时。 3. **RAWTOHEXT(raw)**:与`HEXTORAW`相反,`RAWTOHEXT`将二进制数据转换为十六...

    oracle触发器实现二维码

    描述中提到,这个资源是通过Java代码生成二维码图片,然后利用触发器将生成的二维码图片转换为BLOB(Binary Large Object)格式,并将其存储到Oracle数据库的表中。BLOB类型字段用于存储非结构化的二进制数据,非常...

    oracle财务数字转换中文

    从给定的文件信息来看,主要讨论的是在Oracle数据库中将数字转换为中文大写金额的函数实现。这个过程在财务系统中非常常见,尤其是在中国等使用汉字的国家和地区,因为正式的财务文档通常需要将数值金额转换为中文...

    oracle中的BLOB(照片)转换到mysql中

    本篇将详细讲解如何在Oracle与MySQL之间进行BLOB类型的转换,特别是针对照片的处理。 首先,让我们了解BLOB类型。BLOB是一种可以存储大量二进制数据的对象,分为四种子类型:BLOB、CLOB、NCLOB和BFILE。在Oracle中...

Global site tag (gtag.js) - Google Analytics