我需要这个才能返回完全匹配,同时仍然可以使用外卡。
所以当搜索'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] + '%'
答案 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 carb
和carb for racing
,但不会匹配racing carburator
或carburator for racing
。