上一篇:Oracle推免费XE版 和微软SQL针锋相对 >>
浅议Oracle中的进制转换
一 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进制
从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; / |
下一篇:SQL Server日志文件丢失的恢复方法 >>
相关文章:
- · 从Java应用程序动态生成PDF文件
- · MIDP2.0手机上手电筒程序的实现
- · 全面分析MIDP通信API和外部系统交互
- · 封装的变化之不断变化的需求
- · 封装的变化之封装对象创建的变化
- · Visual C#编程入门之语句
- · C#+Direct3D9.0开发实例之月亮绕着地球转
- · Visual C# 3.0 新特性概览
- · 利用Visual C#实现Reversi游戏开发
- · 对C# 2.0中匿名方法的怀疑分析
- · 在C#中利用DirectX实现声音播放
- · 对C#开发的两个基本原则的深入讨论
- · 开源的真正影响:扩大软件资产的生命力
- · 10岁学编程 拥有19项专利的女程序员
- · SOA:编织未来IT架构
- · 项目管理之我见-程序员程序开发步骤
- · 技术与人生 谈程序员的成长
- · 分析:Web2.0的喧哗与阵痛
- · Gartner称企业将在Windows上运行开源软件
- · 开放源代码正被恶意软件作者所利用
- · 开源JBoss牵手Sun成NetBeans合作伙伴
- · ASP.NET2.0数据库入门之SQL Server
- · 基于Socket的Java网络编程集粹
- · Vista可在发布后立即升级 无需等待补丁
- · OEM被指是鸦片 技术黑洞吞噬高新技术产业
- · 软件产业政策将逐步法制化 国家新政将出台
- · 鲍尔默称四年前预言失败 Linux并未击倒视窗
- · Vista再次大缩水 PC2PC同步功能被取消
- · 中国软件遭遇逼迫式打法 本土化趋势加速
- · 公测版Vista发布 服务器不堪重负暂停下载
- · 中国软件业“芯”太软
- · 微软杀毒欲玩捆绑之计图谋通吃
- · 微软不再提供Win98补丁 将停止支持XP SP1
- · Google CEO:未来50年仍以搜索为核心业务
- · IBM成为ISV和开发者合作方面领导商
- · 倪光南:中国软件人对开源社区贡献太少
- · 开源世界遭遇尴尬 商业味日趋浓厚
- · 微软攻击开源 称Office领先十年
