我有这个sql语句:
SELECT * from tBooks where BookNbr = '20111122-001'
BookNbr定义为varchar (15)
,记录确实存在于表中。
我认为它可能与破折号有关,但不知道为什么......
答案 0 :(得分:3)
所以这可能是一个连字符与短划线与短划线问题。 (您可以通过将显示的匹配字段粘贴到ascii编辑器中来确认是否出现多字节字符。)
SELECT * from tBooks where BookNbr like '20111122%001'
以便%
忽略中间的特定标点符号。
答案 1 :(得分:0)
除了@wallyk提供的解决方案之外,问题也可能是由于索引条目损坏引起的。您可以使用
绕过索引来检查这一点SELECT * from tBooks where BookNbr||'' = '20111122-001'
如果这确实返回了记录,那么备份和恢复数据库以重建索引(或删除并重新创建索引)是明智的。