2013-08-08 4 views
0

Моего запроса как этогоSql запроса на точные совпадения слов

declare @searchWord varchar(100) 
set @searchWord = 'carb9' 
declare @tableWord varchar(100) 
set @tableWord = 'Racing Carb9 uretor' 
--set @tableWord = 'carb9' 

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

Этот запрос работает, когда @tableWord является «Гонки Carb9 uretor», но не работает, когда @tableword просто «carb9». Он должен работать в обоих условиях. Что я делаю неправильно?

+0

Что вы пытаетесь здесь сделать? –

+0

Если вы вставляете @tableWord в пробелы, вам не нужно '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '+ @tableWord + '' like '% [^ a- z0-9] '+ @searchWord +' [^ a-z0-9]% ''. –

ответ

0

@ tableWord = «carb9» не соответствует ни одному из шаблона вашего ИНЕК,

2

Вы можете добавить условие @tableWord = @searchWord к вашему запросу. В настоящий момент ни одно из ваших условий не может быть верным для этого случая.

declare @searchWord varchar(100) 
set @searchWord = 'carb9' 
declare @tableWord varchar(100) 
set @tableWord = 'Racing Carb9 uretor' 
--set @tableWord = 'carb9' 

select 1 
where @tableWord like '%[^a-z0-9]' + @searchWord + '[^a-z0-9]%' 
or @tableWord like @searchWord + '[^a-z0-9]%' 
or @tableWord like '%[^a-z0-9]' + @searchWord 
or @tableWord = @searchWord 
Смежные вопросы