只用LIKE匹配整个单词?

Abh*_*rma 22 sql sqlite sql-like

所以'真棒文档'LIKE'%doc%'是真的,因为doc是一个子字符串.但是,我希望它是假的,而'真棒医生'或'doc awesome'或'awesome doc awesome'应该是真的.我该怎么办?

我正在使用sqlite,所以我希望我不必使用不可用的东西.

Yet*_*ser 32

把它分成四个部分怎么样 -

[MyColumn] Like '% doc %' 
OR [MyColumn] Like '% doc' 
OR [MyColumn] Like 'doc %' 
OR [MyColumn] = 'doc'
Run Code Online (Sandbox Code Playgroud)

编辑:另一种方法(仅适用于ascii字符)可以是:

'#'+[MyColumn]+'#' like '%[^a-z0-9]doc[^a-z0-9]%'
Run Code Online (Sandbox Code Playgroud)

(你可能也想照顾任何特殊的字符)

它看起来不像,但您可能想要探索全文搜索包含,以防更适合您的情况.

请参阅: - MSDN:[](通配符 - 要匹配的字符)(Transact-SQL)

  • +1因为这是我能想到的唯一方法,但它让我颤抖. (3认同)

Fis*_*rdo 7

WHERE (@string LIKE 'doc %' OR @string LIKE '% doc' OR @string LIKE '% doc %' OR @string = 'doc')
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用以下条件:

(' '+YOUR_FIELD_NAME+' ') like '% doc %'
Run Code Online (Sandbox Code Playgroud)

它比其他解决方案更快地工作。

  • 如果单词是“doc”呢? (2认同)
  • @Zeeshanef 没什么,它只是有效 ' ' + 'doc' + ' ' 适合 '% doc %' (2认同)