Сопоставьте только целые слова с 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%'?