一:问题描述
有时,想用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
现在,查询不出现问号了。