plsql中文字符不能匹配

今天遇到一个比较奇葩的问题,在查询的时候用到了条件,但是数据库中这个字段存的是中文。在进行条件匹配的时候死活匹配不上,哪怕将匹配的内容从数据库拷贝出来。搞了半天实在不知道什么原因,于是将该字段的内容改为非中文,立马就匹配上了。于是肯定是字符问题。
好了,原因找到了。那么接下来就是解决字符问题了。
首先看看目前的字符编码:查询select userenv(‘language’) from dual, 查询结果为AMERICAN_AMERICA.AL32UTF8。ok,看到这里大概就知道了,最后的结尾时utf所以数据库里能存中文,不会乱码。但是看前面american,问题就在这里。我们实际使用的是SIMPLIFIED CHINESE_CHINA.AL32UTF8。两种字符集进行匹配当然不会成功了。
ok,到这里原因已经彻底清楚了。接下来就是解决这个具体的问题了。上网搜索了一下,解决方法是:首先,修改注册表windows:注册表->oracle->…->NLS_LANG为AMERICAN_AMERICA.ZHS16GBK,改为SIMPLIFIED CHINESE_CHINA.AL32UTF8。然后重启一下plsql看看能不能正常匹配,如果不能那么再进行下一步配置:添加系统环境变量,在系统环境变量里新建一个NLS_LANG,值为:SIMPLIFIED CHINESE_CHINA.AL32UTF8。重启plsql。
到这里,我的问题已经完美解决了!如果你有更好的解决方法,欢迎交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值