2012-08-01 62 views
0

我在執行一個簡單的查詢的麻煩,如下面的比較查詢 - Oracle數據庫

select * from table_name where variabe_name like '在職' 

問題是中國的字符。那些字符在表格中(我只是在從表格中選擇*之後複製它們,所以中文字符的顯示效果很好),但它似乎不起作用。當它執行查詢時,它返回0行。

我以前也試過

select * from table_name where variabe_name like '%在職%' 

select * from table_name where variabe_name = '在職' 

但是,這並不工作。

任何線索的問題可能是什麼?

Thnaks很多

+0

看看這個[主題](http://forums.devshed.com/oracle-development-96/oracle-10g-chinese-charecter-issue-708247.html) – 2012-08-01 06:38:37

+0

我建議嘗試LIKEC而不是LIKE來處理複合字符。 (或可能LIKE2或LIKE4) – tvm 2012-08-01 10:18:54

+0

可能是'其中variabe_name like unistr('%\ 4E2D \ 6587%')'或'其中variabe_name = unistr('\ 4E2D \ 6587')'。這裏是鏈接[鏈接](http://www.sqlsnippets.com/en/topic-13406.html) – valex 2012-08-01 12:35:50

回答

1
SQL> create table mytbl (data_col varchar2(200)); 
Table created 
SQL> insert into mytbl values('在職'); 
1 row inserted. 
SQL> commit; 
Commit complete. 
SQL> select * from mytbl where data_col like '%在職%'; 
DATA_COL                                                
----------- 
在職 

SQL> SELECT * FROM nls_database_parameters where parameter='NLS_CHARACTERSET'; 
PARAMETER      VALUE         
------------------------------ ---------------------------------------- 
NLS_CHARACTERSET    AL32UTF8 

NLS_CHARACTERSET應設置爲AL32UTF8。因此,嘗試

SQL> ALTER SESSION SET NLS_CHARACTERSET = 'AL32UTF8'; 

還要確保參數NLS_NCHAR_CHARACTERSET設置爲UTF8

SQL> ALTER SESSION SET NLS_NCHAR_CHARACTERSET = 'UTF8';