日期:2014-05-18  浏览次数:20602 次

select * from my_table where name = '汉字名称' 查不出数据?
大家好!

我用的数据库为SQL Server 2005 Express,创建了一个简单的表my_table,结构如下:

[id] [int] NOT NULL,
[name1] [varchar](16) NULL,
[name2] [nvarchar](16) NULL

加入两条数据,如下:

1 sj sj
2 汉字 汉字

使用ODBC建立数据源,使用VC++2008新建Win32控制台工程,使用开源库OTL V4连接数据源,成功

使用语句select * from my_table where name1 = 'sj',查询成功,name2也成功

但是当我把where name1 = 'sj'改成where name = '汉字'的时候,就查找不到数据了,name2同样如此



曾经做过的尝试如下:

使用setlocale( LC_ALL, "chinese" ); 不成功

指定OTL使用Unicode编码

#define OTL_UNICODE_CHAR_TYPE wchar_t
#define OTL_UNICODE

不成功

修改数据源配置中的本地区域设置,不成功


不知道这个问题有人遇到过吗,是不是我还漏了什么东西没有做?谢谢大家!!

------解决方案--------------------
试试

SQL code
where name = N'汉字'

------解决方案--------------------
SQL code
select * from my_table where name1 =N'汉字'

------解决方案--------------------
SQL code
Unicode编码问题
要么将varchar-->nvarchar()
要么在汉字的前面加N'汉字'

------解决方案--------------------
谢谢了,又学习了。。。。。。。。
------解决方案--------------------
select * from my_table where name1 =N'汉字'