从varchar2获取字符代码

时间:2015-06-24 10:29:52

标签: oracle plsql

从Oracle中的varchar2获取字符代码的正确/最佳方法是什么?

我想要一个接受varchar2作为参数的函数,并返回一个字节序列,这些字节是varchar2参数中字符的字符代码。

2 个答案:

答案 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