Сопоставьте только целые слова с LIKE?
Итак, "замечательный документ" LIKE "% doc%" является истинным, поскольку doc является подстрокой. Но я хочу, чтобы это было ложным, в то время как "awesome doc" или "doc awesome" или "awesome doc awesome" должны быть правдой. Как я могу справиться с подобным?
Я использую sqlite, поэтому надеюсь, что мне не нужно использовать что-то, что недоступно.
Ответы
Ответ 1
Как разбить его на четыре части -
[MyColumn] Like '% doc %'
OR [MyColumn] Like '% doc'
OR [MyColumn] Like 'doc %'
OR [MyColumn] = 'doc'
Изменить: альтернативный подход (только для символов ascii) может быть:
'#'+[MyColumn]+'#' like '%[^a-z0-9]doc[^a-z0-9]%'
(Вы также можете позаботиться о любом специальном char)
Это не похоже, но вы можете изучить Полнотекстовый поиск и Содержит, если это более подходит для вашей ситуации.
См:
- MSDN: [] (Подстановочный знак - символ для соответствия) (Transact-SQL)
Ответ 2
WHERE (@string LIKE 'doc %' OR @string LIKE '% doc' OR @string LIKE '% doc %' OR @string = 'doc')
Ответ 3
Вы можете использовать некоторые OR, LIKE '% doc%' ИЛИ LIKE 'doc%' ИЛИ LIKE '% doc' ИЛИ LIKE 'doc'
Ответ 4
вы можете просто использовать условие ниже:
(' '+YOUR_FIELD_NAME+' ') like '% doc %'
он работает быстрее, чем другие решения.
Ответ 5
Как насчет NOT LIKE '%doc%'
?