我有跟随的查询,其中包含LIKE作为WHERE子句中的Contains-Condition。
SELECT * FROM [dbo].[SearchableContents]
WHERE
(Title LIKE '%thisreturnsnothing%') --no results match this condition
OR
(contains([Content], '"existingcontent*"')) --this condition is matched by some results
如上面的代码示例所述,LIKE-Part与数据库中的任何条目都不匹配,而contains-condition则不匹配。
现在这里有一些有趣的行为: 虽然" OR"意味着返回包含查找匹配的结果,查询不返回任何内容。
如果LIKE-Part被类似的东西(在逻辑方面)替换为1 = 0,则查询的行为符合预期。
SELECT * FROM [dbo].[SearchableContents]
WHERE
1 = 0 -- returns false, duh
OR
(contains([Content], '"existingcontent*"')) --this condition is matched by some results
所以我的问题是:与Like,Contains和OR这个奇怪的相关性有什么意义?
编辑: 在通过估计的150个示例验证此问题中的问题是真实的之后,我们现在无法重现它。
为了回答@sagi的问题,我们在我们的全文目录中添加了标题栏,以某种方式解决了整个问题。
感谢您抽出宝贵的时间,感谢抱歉让整个案例无法满足。