Альтернатива SQL для Like для возврата точных совпадений (т.е. - PullRequest
2 голосов
/ 23 сентября 2010

Мне нужно это, чтобы получить точное совпадение, но при этом использовать групповой символ.

Так что при поиске '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 ]

2 голосов
/ 23 сентября 2010

Попробуйте это:

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 

Этот имеет дело с крайними случаями.

0 голосов
/ 23 сентября 2010

попробуй

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

Это будет соответствовать racing carb и carb for racing, но не racing carburator или carburator for racing.

0 голосов
/ 23 сентября 2010

Не знаю о mysql или ms-sql, но вы можете использовать функцию regexp_like в oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...