解決PLSQL查不到帶中文條件的記錄

2021-06-18 17:15:28 字數 2753 閱讀 8782

設定環境變數 重啟plsql

nls_lang=american_america.al32utf8

原因:客戶端與伺服器端編碼不一致

了解下nls_lang的知識

nls_lang 引數組成

nls_lang=_.

檢視oracle服務端編碼:select * from sys.nls_database_parameters;

檢視client編碼:select * from sys.nls_session_parameters;

從下面服務端 編碼我們可以得到: nls_lang = american_america.al32utf8

檢視oracle服務端編碼:select * from sys.nls_database_parameters;

nls_language  american

nls_territory  america

nls_currency  $

nls_iso_currency  america

nls_numeric_characters  .,

nls_characterset  al32utf8

nls_calendar  gregorian

nls_date_format  dd-mon-rr

nls_date_language  american

nls_sort  binary

nls_time_format  hh.mi.ssxff am

nls_timestamp_format  dd-mon-rr hh.mi.ssxff am

nls_time_tz_format  hh.mi.ssxff am tzr

nls_timestamp_tz_format  dd-mon-rr hh.mi.ssxff am tzr

nls_dual_currency  $

nls_comp  binary

nls_length_semantics  byte

nls_nchar_conv_excp  false

nls_nchar_characterset al16utf16

nls_rdbms_version 11.2.0.1.0

檢視client編碼   :select * from sys.nls_session_parameters;

nls_language simplified chinese

nls_territory china

nls_currency ¥

nls_iso_currency china

nls_numeric_characters .,

nls_calendar gregorian

nls_date_format dd-mon-rr

nls_date_language simplified chinese

nls_sort binary

nls_time_format hh.mi.ssxff am

nls_timestamp_format dd-mon-rr hh.mi.ssxff am

nls_time_tz_format hh.mi.ssxff am tzr

nls_timestamp_tz_format dd-mon-rr hh.mi.ssxff am tzr

nls_dual_currency ¥

nls_comp binary

nls_length_semantics byte

nls_nchar_conv_excp false

明顯客戶端的編碼和伺服器端 的不一致!!!!解決辦法:

設定環境變數 重啟plsql

nls_lang=american_america.al32utf8

此方法也適合用exp imp !以免中文有亂碼出現!或部分資料亂碼!

winnt>   set nls_lang=american_america.al32utf8

linux>    export nls_lang=american_america.al32utf8

檢視 nls_lang 的方法

windows使用:echo %nls_lang%

c:\users\administrator>echo %nls_lang%

american_america.al32utf8

修改db編碼的辦法:(在oracle 11g上通過測試) --風險操作....最好不要用!!!!!!!!

sql> conn system as sysdba;

sql> shutdown immediate;

sql> startup mount;

sql> alter system enable restricted session;

sql> alter system set job_queue_processes=0;

sql> alter database open;

sql> alter database character set internal_use al32utf8;

sql> shutdown immediate;

sql> startup

另外如果plsql檢視結果亂碼 可能是字型的問題 :請見

關於SQL語句條件值寫中文查不到的問題

在使用jdbc鏈結mysql執行sql語句的時候,sql語句中的where條件,引數值帶中文,則查詢不到結果,而where條件,引數值都為數字或字母時可以正常查詢,原因是mysql的character set connection預設的設定不是utf8,我的解決辦法,開啟命令列提示符操作介面 登陸m...

mysql like 查不到結果 中文 查詢優化

參考 mysql like keyword 不走索引替代方法 select locate xbar foobar 返回0 select locate bar foobarbar 返回4 select locate bar foobarbar 5 返回7 備註 返回 substr 在 str 中第一次...

解決pymysql查不到最新資料的辦法

最近用 flask 寫了幾個介面部署在伺服器上,然後用 pytest 來做測試,但遇到了問題,搞了大半天才把問題解決。問題大概是這樣的,我在本地環境用 pytest 寫 來對伺服器上 flask 的介面進行測試,在測試刪除介面的時候,第一步我在 pytest 中會通過sql插入資料到mysql資料庫...