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