今天遇到一个比较奇葩的问题,在查询的时候用到了条件,但是数据库中这个字段存的是中文。在进行条件匹配的时候死活匹配不上,哪怕将匹配的内容从数据库拷贝出来。搞了半天实在不知道什么原因,于是将该字段的内容改为非中文,立马就匹配上了。于是肯定是字符问题。
好了,原因找到了。那么接下来就是解决字符问题了。
首先看看目前的字符编码:查询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。
到这里,我的问题已经完美解决了!如果你有更好的解决方法,欢迎交流!
plsql中文字符不能匹配
最新推荐文章于 2023-07-25 17:34:39 发布