1

我在执行如下简单查询时遇到问题

select * from table_name where variabe_name like '在职'

问题是中文字符。这些字符在表中(我只是在从表中选择 * 后复制了它们,所以中文字符的显示效果很好)但它似乎不起作用。当它执行查询时,它返回 0 行。

我也试过

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

select * from table_name where variabe_name = '在职'

但这也行不通。

任何线索可能是什么问题?

非常感谢

4

2 回答 2

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';
于 2012-08-01T21:42:26.750 回答
1

==> 找到解决方法:在中文字符前加上'N',这样它们就被解释为Unicode。Like: where field like N'罐'

于 2019-04-05T09:05:01.080 回答