oracle数据库提取数据为十六进制如何转换
2个回答
展开全部
如果楼主的 substr(XMXM,13,8) 格式完全标准,不存在非16进制的格式,则语句很简单
select to_number(substr(XMXM,13,8),'xxxxxxxxxx') from sonz112;
但如果 substr(XMXM,13,8) 格式存在不标准的情况,则以上语句会报错,无法提出任何结果,这就需要用自定义函数来实现:
create or replace function test_fun_16to10(str_num varchar2) return number
is
begin
return to_number(str_num,'xxxxxxxxxx');
exception when others then
return '';
end;
select test_fun_16to10(substr(XMXM,13,8),'xxxxxxxxxx') from sonz112;
这样对于格式不标准的行,就会返回NULL值。
select to_number(substr(XMXM,13,8),'xxxxxxxxxx') from sonz112;
但如果 substr(XMXM,13,8) 格式存在不标准的情况,则以上语句会报错,无法提出任何结果,这就需要用自定义函数来实现:
create or replace function test_fun_16to10(str_num varchar2) return number
is
begin
return to_number(str_num,'xxxxxxxxxx');
exception when others then
return '';
end;
select test_fun_16to10(substr(XMXM,13,8),'xxxxxxxxxx') from sonz112;
这样对于格式不标准的行,就会返回NULL值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询