日期:2014-05-16  浏览次数:20547 次

关于oracle中无法查询中文条件的解决方法

1. 检查一个简单的sql = select * from tb_user_master where name = '张三'
表中存有该数据,但是检索无结果

2.解决方法很简单
-?? SELECT * FROM v$nls_parameters ; 查看NLS_CHARACTERSET 的值是多少,我的AL32UTF8
- 查找客户机器的注册表,查找NLS_LANG的值,改成AL32UTF8共需要修改3处,重启PL/SQL即可

---------------------------为了解决这个问题,走了很多弯路,也找到了替换oracle字符集的方法-------
修正环境 oracle 9i

sql> shutdown immediate

sql> startup mount

sql> alter system enable restricted session;

sql> alter system set job_queue_processes=0;

sql> alter system set aq_tm_processes=0;

sql> alter database open;

sql> alter database character set <internal_use> AL32UTF8;

sql> shutdown immediate

sql> startup

这里的INTERNAL_USE可选,譬如用于不能从父集转到子集的场合,但是这样做会产生乱码,或者表中的数据不能读取。