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 AL32UTF8;
sql> shutdown immediate
sql> startup
这里的INTERNAL_USE可选,譬如用于不能从父集转到子集的场合,但是这样做会产生乱码,或者表中的数据不能读取。