1. 程式人生 > >Oracle資料隱式亂碼,正則匹配中文資料失敗

Oracle資料隱式亂碼,正則匹配中文資料失敗

起因:相同資料,供述廠家不同,使用正則匹配時,不同廠家的資料匹配不到。

描述:導致此問題的發生原因為“資料編碼不一致”,如果僅憑肉眼壕無差異。此時需用Convert函式檢視資料編碼,會發現不同廠家的相同資料轉換出來的編碼是不一致的。

附轉碼函式使用方式:

在oracle中,convert函式是用來轉字符集轉換的。  

語法:CONVERT( char, dest_char_set [ ,source_char_set] ); 

引數說明
char
要轉換的值。它可以是任何的資料型別 。
dest_char_set
要轉換的字符集的名稱。utf8,US7ASCII,ZHS16GBK
source_char_set
儲在資料庫中的字符集,可以不寫,預設值是資料庫的字符集。






 

 

oracle sql如何把us7ascii的字串編碼轉換為utf8或者gb2312編碼
        用CONVERT(char, dest_char_set [,source_char_set] )函式
windows 可以直接修改 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1 nls_lang

值為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 或使用convert 函式Eg. convert(char,'ZHS16GBK','UTF8')

SQL code SQL> select CONVERT(datatype, 'US7ASCII' ) from BSTH_SYS_FIELD_ALIAS; CONVERT(DATATYPE,'US7ASCII') 
-------------------------------------------------------------------------------- 
gfdfghdf 
?? 
SQL
> select CONVERT(datatype, 'ZHS16GBK' ) from BSTH_SYS_FIELD_ALIAS; CONVERT(DATATYPE,'ZHS16GBK') -------------------------------------------------------------------------------- gfdfghdf 中文 ASCII 返回與指定的字元對應的十進位制數; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 CHR 給出整數,返回對應的字元; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C -- - 趙 A