一:问题描述
有时,想用AS重新定义新的中文字段名称,或者在查询包含中文的字段时,查询结果总是出现很多问号,如图:
二:出错原因
环境变量NLS_LANG和数据库服务端字符集不一致
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.WE8ISO8859P1
[oracle@source_pc ~]$ echo $NLS_LANG
--显示结果为空
三:解决办法
修改环境变量NLS_LANG
[oracle@source_pc ~]$ export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
--这样只是针对该窗口,临时生效,对于其他会话不生效。
要想永久生效,可以写入.bash_profile文件。
[oracle@source_pc ~]$ pwd
/home/oracle
[oracle@source_pc ~]$ vi .bash_profile
添加一行:export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[oracle@source_pc ~]$ source .bash_profile
现在,查询不出现问号了。