SQL替代方式喜欢返回完全匹配(即。?

时间:2010-09-23 18:52:30

标签: sql match

我需要这个才能返回完全匹配,同时仍然可以使用外卡。

所以当搜索'carb'时,我想返回一个像'Racing Carb'这样的值 但我不想返回诸如'Racing Carburetor'这样的价值

这就是我现在所拥有的......

SELECT  I.SKU, I.[Description]
FROM    Inventory AS I  
INNER JOIN MisspelledWords AS M
ON I.[Description] like   '%' + M.[Word] + '%'

3 个答案:

答案 0 :(得分:2)

试试这个:

ON I.[Description] like '%[^a-z]' + M.[Word] + '[^a-z]%'

<强>更新

declare @word varchar(100)
set @word = 'carb' 

select 1 
where  'Racing Carburetor' like '%[^a-z]' + @word + '[^a-z]%'

什么都不返回,这意味着'Racing Carburator'没有被选中。

更新2

declare @searchWord varchar(100), @tableWord varchar(100)
select @searchWord = 'carburetor' 
,@tableWord = 'Racing Carburetor'

select 1 
where  @tableWord like '%[^a-z]' + @searchWord + '[^a-z]%'
or @tableWord like @searchWord + '[^a-z]%'
or @tableWord like '%[^a-z]' + @searchWord 

这个涉及边缘案件。

答案 1 :(得分:0)

关于mysql或ms-sql的Dunno,但你可以在oracle中使用regexp_like函数。

答案 2 :(得分:0)

尝试

(field like '%carb' or field like '%carb %')

这将匹配racing carbcarb for racing,但不会匹配racing carburatorcarburator for racing