从Oracle中的varchar2
获取字符代码的正确/最佳方法是什么?
我想要一个接受varchar2
作为参数的函数,并返回一个字节序列,这些字节是varchar2
参数中字符的字符代码。
答案 0 :(得分:2)
您可以使用内置的dump
function:
select dump('Hello world') from dual;
DUMP('HELLOWORLD')
--------------------------------------------------------
Typ=96 Len=11: 72,101,108,108,111,32,119,111,114,108,100
或者以十六进制:
select dump('Hello world', 1016) from dual;
DUMP('HELLOWORLD',1016)
---------------------------------------------------------------------
Typ=96 Len=11 CharacterSet=AL32UTF8: 48,65,6c,6c,6f,20,77,6f,72,6c,64
如果您想要RAW等效字符串,可以使用the utl_i18n.string_to_raw
function:
select utl_i18n.string_to_raw('Hello world') from dual;
UTL_I18N.STRING_TO_RAW('HELLOWORLD')
--------------------------------------------------------------------------------
48656C6C6F20776F726C64
答案 1 :(得分:0)
CREATE OR REPLACE
FUNCTION toAscii(s IN VARCHAR2) RETURN VARCHAR2
IS
r VARCHAR2(32767);
BEGIN
FOR i IN 1 .. LENGTH(s) LOOP
r := r||TO_CHAR(ASCII(SUBSTR(s, i, 1)), 'FMXX');
END LOOP;
RETURN r;
END toAscii;
/
SELECT toAscii('ABCxyz') FROM DUAL;
41424378797A