所以'真棒文檔'LIKE'%doc%'是真的,因爲doc是一個子字符串。但是,我希望它是虛假的,而'真棒文檔'或'文檔真棒'或'真棒文檔真棒'應該是真實的。我該如何處理類似的問題?只用LIKE匹配整個單詞?
我正在使用sqlite,所以我希望我不必使用一些不可用的東西。
所以'真棒文檔'LIKE'%doc%'是真的,因爲doc是一個子字符串。但是,我希望它是虛假的,而'真棒文檔'或'文檔真棒'或'真棒文檔真棒'應該是真實的。我該如何處理類似的問題?只用LIKE匹配整個單詞?
我正在使用sqlite,所以我希望我不必使用一些不可用的東西。
怎麼樣分成四個部分 -
[MyColumn] Like '% doc %'
OR [MyColumn] Like '% doc'
OR [MyColumn] Like 'doc %'
OR [MyColumn] = 'doc'
編輯:另一種方法(僅適用於ASCII字符)可能是:
'#'+[MyColumn]+'#' like '%[^a-z0-9]doc[^a-z0-9]%'
(您可能需要採取任何特殊的照顧字符)
它看起來不像,但你可能想探索Full Text Search和Contains,以防萬一它更適合你的情況。
參見: - MSDN: [ ] (Wildcard - Character(s) to Match) (Transact-SQL)
+1因爲這是我能想到的唯一方法,但它讓我發抖。 – 2011-06-08 19:02:08
不要忘記字符串只是'doc'的情況。 – FishBasketGordo 2011-06-08 19:03:44
(查看關於匹配「doc」大小寫的其他答案)。 – 2011-06-08 19:04:28
NOT LIKE '%doc%'
怎麼樣?
任務是隻找到單詞「DOC」 - 不是一個部分詞作爲在「DOCument」 – 2011-06-08 18:59:46
我認爲問題是使用LIKE匹配整個單詞,而不是作爲另一個單詞的一部分。 – FishBasketGordo 2011-06-08 19:00:49
你可以使用一些手術室,LIKE '%DOC%' OR LIKE 'DOC%' OR LIKE '%doc的' OR LIKE 'DOC'
+1對於包含「doc」的情況,但可能更好地寫爲'='那裏。 – 2011-06-08 19:04:12
WHERE (@string LIKE 'doc %' OR @string LIKE '% doc' OR @string LIKE '% doc %' OR @string = 'doc')
+1包含「doc」情況 – 2011-06-08 19:03:49
重複: http://stackoverflow.com/questions/5444300/search-for-whole-word-match-with-sql-server-like-pattern – GKislin 2017-04-17 19:44:12