Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了oracle中无法查询中文条件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1, SELEct * from basecar
--查询出来的结果中文全部为?
2, SELEct*frombasecarwheretruck_number='京AS888'
--肯定是有数据的,但查不到,只要有中文就查不到
百度的结果是数据库服务器端和客户端字符集不一致导致的。
1
Oracle字符集是一个字节数据的解释的符号集合,@R_944_8857@,有相互的包容关系。OracLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 
2
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。 
3
4
它的格式如下:   NLS_LANG = language_territory.charset 
5
6
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。 
7
8
其中: 
9
10
Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK 
11
12
NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。 
13
14
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。 
15
16
如果检查的结果发现server端与clIEnt端字符集不一致,请统一修改为同server端相同的字符集。 
查询服务器端的字符集
userenv('language')fromdual;
SELEct*fromv$nls_parametersparameter'NLS_CHARACTERSET';
最重要的就是就是这个 ZHS16GBK

客户端的字符集,我在注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\OracLE\KEY_OraclIEnt11g_home1)中也没找到NLS_LANG,就当它与服务器端不一样吧。
问题解决方法:
1,设置环境变量, NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
2,重启pl/sql,上面两个SQL查询就正常了。

但是还有其他问题...
项目需要, 在windows服务中调用sql查询,查询条件有中文,查不到数据,直接执行exe应用程序却可以查到数据,想不明白为什么...

不明白也要继续,在注册表中创建字符串值@H_674_350@NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
然后服务SQL查询就正常了。

所以,简单、一步到位的做法就是在注册表中修改。

http://code.js-code.com/article/p-blufludc-bcb.html

大佬总结

以上是大佬教程为你收集整理的oracle中无法查询中文条件全部内容,希望文章能够帮你解决oracle中无法查询中文条件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。