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

猜你喜欢

转载自www.cnblogs.com/hanhc/p/9905186.html