遇到一个奇怪的问题,希望有大神能够解答

htw515812076 2013-12-03 07:43:52
小弟自己做一个小程序用到了数据库,用的是微软的SQL SERVER2008r2,自己建了几个表,在查询时遇到了一下现象

这是查询Table_TrueWineIndexDB这个表所有记录,这个没问题

可是加上用where 对字符串类型的字段做查询时,结果总为空

但是用WHERE 对int 型的字段做查询时结果没有问题
而且对另一个表Table_TrueWineDB不管是查int型 还是nvarchar型都没有问题

这些图片应该已经把问题展示出来了,我已经束手无策了,问周围的同学都完全搞不懂,希望有高手能够解答一下
...全文
213 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
潇洒王子 2013-12-04
  • 打赏
  • 举报
回复
查询不出来结果的时候,可以用排除法来查看原因,没结果肯定是条件的问题。可以查看字段长度,总之办法很多
LongRui888 2013-12-04
  • 打赏
  • 举报
回复
应该是WineName字段的字符串'关公坊'中,前面有空格,后面有可能有特殊字符,比如回车键等。 可以用like,也可以用下面的来: select * from [WINE_DB].[dbo].[Table_TrueWineIndexDB] where patindex('%关公坊%' ,winename) > 0
發糞塗牆 2013-12-04
  • 打赏
  • 举报
回复
那应该是你的数据库那列没用用nvarchar/nchar类型
htw515812076 2013-12-04
  • 打赏
  • 举报
回复
我的程序用的是MFC,这样写: FlavorIndexDB.AddNew(); rs.GetFieldValue(_T("Flavor"),FlavorIndexDB.m_Flavor); FlavorIndexDB.m_FlavorIndex=i; i++; FlavorIndexDB.Update(); rs是MFC提供的CRecordSet类,在数据库中m_Flavor对应的Flavor这一项在数据库中就会在字符串末端出现乱码一样的东西(程序调试的时候m_Flavor是没有乱码的,但是都数据库中查看就有) 但是像下面这样写: FlavorIndexDB.AddNew(); CString temp; rs.GetFieldValue(_T("Flavor"),temp); FlavorIndexDB.m_Flavor=temp; FlavorIndexDB.m_FlavorIndex=i; i++; FlavorIndexDB.Update(); 就不会有问题,中间有一个CString的临时对象做传递,是中间有什么字符串转化吗(m_Flavor是CStringW类型)
LongRui888 2013-12-04
  • 打赏
  • 举报
回复
引用 5 楼 htw515812076 的回复:
[quote=引用 1 楼 shoppo0505 的回复:] 你看看 关公坊 前后是否有空格字符。 使用 where winename like '%关公坊%' 查询试试。
确实是有没显示出来的特殊字符,谢谢了[/quote] 之前也遇到过类似的问题,后来发现时一些控制字符,比如回车键,换行键,你可以试试: where winename like '%'+char(10)+'%' where winename like '%'+char(13)+'%'
siemens_chang 2013-12-04
  • 打赏
  • 举报
回复
不支持中文查询很好弄,你数据库设计的问题。另外也可以这样where winname=N'xxx'
htw515812076 2013-12-04
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505 的回复:
你看看 关公坊 前后是否有空格字符。 使用 where winename like '%关公坊%' 查询试试。
确实是有没显示出来的特殊字符,谢谢了
htw515812076 2013-12-04
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
应该是WineName字段的字符串'关公坊'中,前面有空格,后面有可能有特殊字符,比如回车键等。 可以用like,也可以用下面的来: select * from [WINE_DB].[dbo].[Table_TrueWineIndexDB] where patindex('%关公坊%' ,winename) > 0
恩,试过了,确实是后面有特殊字符,不过看不到,我想起来了,最开始确实我发现后面有乱码一样的字符后来点了几下又没了就没在意,现在想起来了,我再看看程序哪里有问题,总之非常感谢
發糞塗牆 2013-12-03
  • 打赏
  • 举报
回复
where winname=N'xxx'试一试
shoppo0505 2013-12-03
  • 打赏
  • 举报
回复
你看看 关公坊 前后是否有空格字符。 使用 where winename like '%关公坊%' 查询试试。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧