字符串比较查询与中文字符 - Oracle数据库

问题描述 投票:1回答:2

我无法执行如下的简单查询

select * from table_name where variabe_name like '在职'

问题是中国人的角色。这些字符在表中(我只是在从表中执行select *之后复制它们,因此显示中文字符的效果很好)但它似乎不起作用。当它执行查询时,它返回0行。

我也试过了

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

select * from table_name where variabe_name = '在职'

但这也不起作用。

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

非常感谢

sql oracle special-characters utf
2个回答
1
投票

==>找到解决方案:在中文字符前加上'N',以便将它们解释为Unicode。喜欢:像'罐'这样的领域


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';
© www.soinside.com 2019 - 2024. All rights reserved.