2015-06-24 34 views
0

從Oracle中的varchar2獲取字符代碼的正確/最佳方式是什麼?從varchar2獲取字符代碼

我想要一個接受varchar2作爲參數的函數,並且會返回一個字節序列,它是varchar2參數中字符的字符代碼。

回答

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               
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 
+0

這是相同的答案你可以從內置的''''''''''''''''''''''''''''''''''''''' –