2012-08-01 85 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';