用函數unistr將Oracle數據庫中的Unicode轉換為中文
1:保留連續的中文
select regexp_substr('Hello,大家好!greeting', '[' || unistr('\0391') || '-' || unistr('\9fa5') || ']+') from dual;
2:保留全部的中文
select regexp_replace('我愛你中國232、。,我愛你895', '[^' || unistr('\0391') || '-' || unistr('\9fa5') || ']','') from dual;
Oracle Unicode轉中文(解碼)
情景描述:
將數據庫中的某個字段誤存儲的是Unicode編碼,需要將其改成中文。
測試:
--將Unicode轉中文
select unistr(REPLACE('\u6d4b\u8bd5unicode\u8f6c\u4e2d\u6587','\u','\')) from dual;
結果是:測試unicode轉中文
實現:
--對某字段進行解碼 update tableName set columnName = unistr(replace(columnName,'\u','\'));
封裝:
/**
* unicode轉中文
*/
CREATE OR REPLACE FUNCTION UNICODE2CHINESE(ENCODE_TEXT IN VARCHAR2)
RETURN VARCHAR2 IS
V_SQL VARCHAR2(10000); --編碼轉換sql
TEXT_BUFFER VARCHAR2(10000); --輸出中文
BEGIN
V_SQL := 'select unistr(REPLACE(''' || ENCODE_TEXT ||
''',''\u'',''\'')) from dual ';
EXECUTE IMMEDIATE V_SQL
INTO TEXT_BUFFER;
RETURN TEXT_BUFFER;
END;
