Oracle数据隐式乱码,正则匹配中文数据失败
起因:相同數(shù)據(jù),供述廠家不同,使用正則匹配時,不同廠家的數(shù)據(jù)匹配不到。
描述:導(dǎo)致此問題的發(fā)生原因為“數(shù)據(jù)編碼不一致”,如果僅憑肉眼壕無差異。此時需用Convert函數(shù)查看數(shù)據(jù)編碼,會發(fā)現(xiàn)不同廠家的相同數(shù)據(jù)轉(zhuǎn)換出來的編碼是不一致的。
附轉(zhuǎn)碼函數(shù)使用方式:
在oracle中,convert函數(shù)是用來轉(zhuǎn)字符集轉(zhuǎn)換的。
語法:CONVERT( char, dest_char_set [ ,source_char_set] );
char | 要轉(zhuǎn)換的值。它可以是任何的數(shù)據(jù)類型 。 |
dest_char_set | 要轉(zhuǎn)換的字符集的名稱。utf8,US7ASCII,ZHS16GBK |
source_char_set | 儲在數(shù)據(jù)庫中的字符集,可以不寫,默認(rèn)值是數(shù)據(jù)庫的字符集。 |
?
?
oracle sql如何把us7ascii的字符串編碼轉(zhuǎn)換為utf8或者gb2312編碼
? ? ? ? 用CONVERT(char, dest_char_set [,source_char_set] )函數(shù)
windows 可以直接修改 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1 nls_lang
值為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 或使用convert 函數(shù)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 返回與指定的字符對應(yīng)的十進制數(shù); SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 CHR 給出整數(shù),返回對應(yīng)的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C -- - 趙 A?
轉(zhuǎn)載于:https://www.cnblogs.com/hanhc/p/9905186.html
總結(jié)
以上是生活随笔為你收集整理的Oracle数据隐式乱码,正则匹配中文数据失败的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php实现异步请求
- 下一篇: scale 和 transform-or