我有一个使用“ LIKE”的查询,我需要将其更改为使用“ contains”。
我的问题是,使用“ contains”子句得到的结果更少,如何获得与LIKE
相同的结果?
这是带有“ LIKE”的查询:
WHERE (
(((((ProductCode=3748710)) OR ((((ManufacturerSkuNoSpaces LIKE
'1703959%')) OR ((JoinedColumnInfo LIKE '%1703959%')))))))
)
这是包含以下内容的“相同”查询:
CONTAINS (JoinedColumnInfo, '"usb*" OR "*usb" OR "usb"' )
OR CONTAINS(ManufacturerSkuNoSpaces, '"usb*" OR "*usb" OR "usb"' )
我希望“ CONTAINS”的结果与通过“ LIKE”获得的结果相同,但是得到的结果会更少。
编辑 这是我得到的结果的示例:
CONTAINS查询:
SELECT JoinedColumnInfo FROM [dbo].[ImportedData]
WHERE CategoryId = 11131700
AND CONTAINS (JoinedColumnInfo, ' "usb*" ')
这是结果:(2结果)
1.F5TYEU 2815124 KOSS cs100usb双面通信耳机USB,有线降噪麦克风
2.NUYVSRB 79X3419cs100usb KOSS双面通讯耳机USB,降噪麦克风
///////////////////////////////////////////////// ///////////////////////////////
这是LIKE查询:
SELECT JoinedColumnInfo FROM [dbo].[ImportedData]
WHERE CategoryId = 11131700
AND JoinedColumnInfo LIKE '%usb%'
这是结果:(3结果)
1.F5TYEU 2815124 KOSS cs100usb双面通信耳机USB,有线降噪麦克风
2.PODCASTUDIOUSB BEHRINGER Studio PodCast套件-包括麦克风,混音器和耳机
3.NUYVSRB 79X3419cs100usb KOSS双面通信耳机USB,降噪麦克风
CONTAINS查询中缺少2个结果,
我该如何解决?
我使用'CONTAINS'是因为它比'LIKE'要快得多。
如果无法以与“ LIKE”相同的方式使用“ CONTAINS”,如何获得上面的“ LIKE”查询最快的结果?
答案 0 :(得分:0)
LIKE和CONTAINS的工作方式存在一些根本差异,最重要的是,在使用CONTAINS时,您需要在列上使用现有的全文索引。
来自here:
CONTAINS可以搜索:
- 一个单词或短语。
- 单词或短语的前缀。
- 一个词在另一个词附近。
- 从另一个词衍生而来的词(例如,单词drive是驱动,驱动,驱动和从动的词干)。
- 与同义词库中另一个单词的同义词相同的单词(例如,单词“ metal”可以具有同义词,例如“ aluminum”和 “钢”)。
另一方面,LIKE使用模式匹配来查找简单的字符串匹配来查找您要查找的值。