设为首页 加入收藏

TOP

oracle ASCII字符串<==>16进制串
2015-07-24 11:24:38 来源: 作者: 【 】 浏览:3
Tags:oracle ASCII 字符串 < > 进制
oracle ASCII字符串<==>16进制串
?
sql中可以直接插入16进制字串表示的数据到blob表中。如果不是16进
制的字符串pl/sql报无效的16进制数字异常。
? www.2cto.com ?
ASCII字符串==>16进制串
create or replace function AscToHex(sIn IN varchar2)
RETURN varchar2
IS
sTmp varchar2(4000);
i integer;
BEGIN
i:=1;
stmp:=’’;
for i in 1..length(sIn) loop
? ?sTmp:=sTmp||trim(to_char(ascii(substr(sIn,i,1)),’XXXX’));
end loop;
return sTmp;
END;
? www.2cto.com ?
  16进制串==>ASCII字符串
?
  要区分字符集,以中文字符为例,对于 数据库字符集是中文,要保证能够正确转回来,要有所不同。数据库字符集是中文
?
create or replace function HexToAsc(sIn IN varchar2)
RETURN varchar2
IS
sTmp varchar2(4000);
i integer;
x integer;
BEGIN
i:=1;
stmp:=’’;
loop
? ?exit when i>length(sIn);
? ?x:=to_number(substr(sIn,i,2),’XXXX’);
? ?if x>128 then
? ? ?sTmp:=sTmp||chr(to_number(substr(sIn,i,4),’XXXX’));
? ? ?i:=i+4;
? ?else
? ? ?sTmp:=sTmp||chr(to_number(substr(sIn,i,2),’XXXX’));
? ? ?i:=i+2;
? ?end if;
end loop;
return sTmp;
END;
?
  数据库字符集是英文
?
create or replace function HexToAsc(sIn IN varchar2)
RETURN varchar2
IS
sTmp varchar2(4000);
i integer;
BEGIN
i:=1;
stmp:=’’;
loop
? ?exit when i>length(sIn);
? ?sTmp:=sTmp||chr(to_number(substr(sIn,i,2),’XXXX’));
? ?i:=i+2;
end loop;
return sTmp;
END;
?
  测试,如下:
?
SQL>select hextoasc(asctohex(’你好ABC么’)) from dual;
HEXTOASC(ASCTOHEX(’你好ABC么’))
-----------------------------------------------------------
你好ABC么
?
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇读书笔记oracle之逻辑体系结构 下一篇PL/SQLDeveloper跑在Oracle64位数..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)
·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)