首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL: Like vs Contains -不同的结果

SQL: Like vs Contains -不同的结果
EN

Stack Overflow用户
提问于 2011-10-07 22:45:58
回答 2查看 33.9K关注 0票数 9

我在一个表上运行两个查询。

代码语言:javascript
运行
复制
SELECT MSDS FROM dbo.MSDSSearch3 WHERE CONTAINS(MSDS, 'STYCAST')

代码语言:javascript
运行
复制
SELECT MSDS FROM dbo.MSDSSearch3 WHERE MSDS like '%STYCAST%'

第一个查询将返回

代码语言:javascript
运行
复制
'STYCAST 50300 LV'

第二个就会回来

代码语言:javascript
运行
复制
'STYCAST 50300 LV'
'STYCAST 2851 BLACK'

有人知道为什么like会比contains返回更多的值吗?我运行contains的方式有问题吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-07 23:22:10

这里有一个类似的帖子,其中重建全文目录似乎解决了这个问题:

SQL Problem: Using CONTAINS() doesn't work, but LIKE works fine

票数 3
EN

Stack Overflow用户

发布于 2011-10-07 22:57:24

CONTAINS是一个完全不同的函数,它是一个针对全文列的基于谓词的查询;它不是一个确定列中是否包含字符串的函数。

对于您正在运行的查询,您可以使用以下命令:

代码语言:javascript
运行
复制
SELECT MSDS FROM dbo.MSDSSearch3 WHERE CONTAINS(MSDS, '"STYCAST*"')

这里有一个前缀搜索,而不是像现在这样的simple_term搜索。

更多细节:http://msdn.microsoft.com/en-us/library/ms187787.aspx

也许在你使用它的方式中,文本'STYCAST 2851 BLACK‘没有进入结果,因为它比'STYCAST 50300 LV’多了一个字符,所以它是17个匹配中的7个匹配,而不是16个匹配中的7个。我不确定,但这可以解释这种奇怪的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7688891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档