2

我有这个 sql 语句:

SELECT * from tBooks where BookNbr = '20111122-001'

BookNbr 定义为varchar (15),并且该记录确实存在于表中。

我想这可能与破折号有关,但不知道为什么...

4

2 回答 2

3

因此,这可能是连字符与破折号与破折号的问题。(您可以通过将显示的匹配字段粘贴到 ascii 编辑器中来确认这一点,以查看是否出现多字节字符。)

SELECT * from tBooks where BookNbr like '20111122%001'

这样就%忽略了中间的特定标点符号。

于 2012-05-10T19:39:03.613 回答
0

除了@wallyk 提供的解决方案外,该问题还可能是由损坏的索引条目引起的。您可以通过使用绕过索引来检查这一点

SELECT * from tBooks where BookNbr||'' = '20111122-001'

如果这确实返回了记录,那么备份和恢复数据库以重建索引(或删除并重新创建索引)将是明智的。

于 2012-05-12T07:39:12.440 回答