浅议Oracle中的进制转换

2016-01-29 16:23 4 1 收藏

浅议Oracle中的进制转换,浅议Oracle中的进制转换

【 tulaoshi.com - SQLServer 】

 

作者: Eygle 出处: BLOG

  进制转换是开发中经常需要用到的,本文简单介绍几种常用的进制转化方法.

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

  一 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 

  二 10进制转换为16进制

  可以通过to_char函数转换

SQL select to_char(123,’xxx’) from dual;
TO_C
----
7b
SQL select to_char(4567,’xxxx’) from dual;
TO_CH
-----
11d7 

  三 2进制转换为10进制

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

  从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 

  四 通过自定义函数实现进制转换

  以下函数来自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;

 

来源:https://www.tulaoshi.com/n/20160129/1498450.html

延伸阅读
标签: 电脑入门
   以下代码实现Unix到Oracle的日期转换。 CREATE OR REPLACE FUNCTION Unix_To_Oracle_Date ( p_unix_date IN NUMBER, -- Range of = 0 p_num_hr_gmt_diff IN PLS_INTEGER -- Range of -24 to +24 ) RETURN DATE AS /* Function Name: Unix_To_Oracle_Date Purp...
Oracle text是Oracle的全文检索技术,是9i版本标准版和企业版的一部分。Oracle text使用标准的sql语言索引、查找、分析存储在oracle数据库、文件或者网络里的文本及文档。 Oracle text能进行关于文档的语言分析,使用多种方法查找文档,包括关键字、上下文查询、逻辑操作、模式匹配、混合主题查询、HTML/XML段落查找等方法。Oracle text在...
许多 C 或者 C++ 程序员对垃圾回收嗤之以鼻,认为垃圾回收肯定比自己来治理动态内存要低效,而且在回收的时候一定会让程序停顿在那里,而假如自己控制内存治理的话,分配和释放时间都是稳定的,不会导致程序停顿。最后,很多 C/C++ 程序员坚信在C/C++ 中无法实现垃圾回收机制。这些错误的观点都是由于不了解垃圾回收的算法而臆想出来的。 ...
toHexString public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。 如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' ('\u0030') 表示它;否则,无符号数大...
标签: Web开发
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

经验教程

414

收藏

65
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部