oracle數據庫查詢亂碼問題

rdbms 11.2.0.4

昨天運維提出了一個問題,在securecrt上執行一個查詢的時候返回0,但是在plsql developer上查詢的時候,返回是有值的。

這個語句中有個條件,where status in ('漢字1','漢字2','漢字3'); 懷疑是字符集的問題,導致傳送到服務器上的時候是亂碼,按照這寫亂碼進行條件查詢,當然查詢不到了。

在其他的客戶端查詢也是這個問題。

查詢數據庫的字符集。通過視圖v$nls_parameters查詢出NLS_DATE_LANGUAGE是SIMPLIFIED CHINESE,NLS_CHARACTERSET是AL32UTF8。

在操作系統上設置變量

在操作系統上設置NLS_LANG爲SIMPLIFIED CHINESE.AL32UTF8
[oracle@Oralinux1 ~]$ export NLS_LANG="SIMPLIFIED CHINESE.AL32UTF8"
[oracle@Oralinux1 ~]$ env | grep NLS_LANG
NLS_LANG=SIMPLIFIED CHINESE.AL32UTF8
[oracle@Oralinux1 ~]$ 

登錄sqlplus 再次查看結果(之前查詢所有的漢字顯示都是問號或亂碼)

[oracle@Oralinux1 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on 星期三 9月 18 01:26:56 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> conn xxxx/xxxxx
Connected.
SQL> select id,name from sys_using_info;

	ID NAME
---------- --------------------
       111 你好
       112 你壞
       113
       117 弄不好
       118 你不壞
       119 滾蛋
       121 哈哈
       123 呵呵
       109 噼裏啪啦
       110 哦哦
       115 按按

	ID NAME
---------- --------------------
       116 各個
       114 的的
       120 開機啊
       122 局阿凡達

15 rows selected.

SQL> 

通過以上的設置後,在使用 之前的where條件進行查詢,返回值了。

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章