在SQL Server上组合LIKE和CONTAINS查询

时间:2016-06-06 13:42:18

标签: sql sql-server full-text-search sql-like

我有跟随的查询,其中包含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的问题,我们在我们的全文目录中添加了标题栏,以某种方式解决了整个问题。

感谢您抽出宝贵的时间,感谢抱歉让整个案例无法满足。

0 个答案:

没有答案