2011-06-08 80 views
14

所以'真棒文檔'LIKE'%doc%'是真的,因爲doc是一個子字符串。但是,我希望它是虛假的,而'真棒文檔'或'文檔真棒'或'真棒文檔真棒'應該是真實的。我該如何處理類似的問題?只用LIKE匹配整個單詞?

我正在使用sqlite,所以我希望我不必使用一些不可用的東西。

+0

重複: http://stackoverflow.com/questions/5444300/search-for-whole-word-match-with-sql-server-like-pattern – GKislin 2017-04-17 19:44:12

回答

21

怎麼樣分成四個部分 -

[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 SearchContains,以防萬一它更適合你的情況。

參見: - MSDN: [ ] (Wildcard - Character(s) to Match) (Transact-SQL)

+3

+1因爲這是我能想到的唯一方法,但它讓我發抖。 – 2011-06-08 19:02:08

+0

不要忘記字符串只是'doc'的情況。 – FishBasketGordo 2011-06-08 19:03:44

+0

(查看關於匹配「doc」大小寫的其他答案)。 – 2011-06-08 19:04:28

-4

NOT LIKE '%doc%'怎麼樣?

+1

任務是隻找到單詞「DOC」 - 不是一個部分詞作爲在「DOCument」 – 2011-06-08 18:59:46

+0

我認爲問題是使用LIKE匹配整個單詞,而不是作爲另一個單詞的一部分。 – FishBasketGordo 2011-06-08 19:00:49

1

你可以使用一些手術室,LIKE '%DOC%' OR LIKE 'DOC%' OR LIKE '%doc的' OR LIKE 'DOC'

+0

+1對於包含「doc」的情況,但可能更好地寫爲'='那裏。 – 2011-06-08 19:04:12

4
WHERE (@string LIKE 'doc %' OR @string LIKE '% doc' OR @string LIKE '% doc %' OR @string = 'doc') 
+1

+1包含「doc」情況 – 2011-06-08 19:03:49