2011-06-08 24 views
14

Doküman bir alt dizesi olduğu için 'harika belge' LIKE '% doc%' doğrudur. Ancak, 'awesome doc' veya 'doc awesome' veya 'awesome doc awesome' doğru olduğunda yanlış olmasını istiyorum. Nasıl biriyle nasıl yapabilirim?LIKE ile sadece tüm kelimeleri eşleştirin?

sqlite kullanıyorum, bu yüzden müsait olmayan bir şey kullanmak zorunda değilim umarım.

+0

Yinelenen kullanabilirsiniz: http://stackoverflow.com/questions/5444300/search-for-whole-word-match-with-sql-server-like-pattern – GKislin

cevap

21

dört parçaya bölmek nereden -

[MyColumn] Like '% doc %' 
OR [MyColumn] Like '% doc' 
OR [MyColumn] Like 'doc %' 
OR [MyColumn] = 'doc' 

Düzenleme: olabilir (sadece ASCII karakter için) alternatif bir yaklaşım:

'#'+[MyColumn]+'#' like '%[^a-z0-9]doc[^a-z0-9]%' 

(herhangi özel bakmak isteyebilirsiniz char de)

Durumunuza benzemiyorsa, Full Text Search ve Contains'u keşfetmek isteyebilirsiniz.

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

+3

+1 Bu düşünebildiğim tek yaklaşım bu, ama beni ürpertiyor. –

+0

Dizenin yalnızca 'doc' olduğu durumu unutmayın. – FishBasketGordo

+0

("doc" örneğinin eşleşmesiyle ilgili diğer yanıtlara bakın). –

-4

NOT LIKE '%doc%' nedir?

+1

Görev sadece "DOC" kelimesini bulmaktır - kısmi bir kelime olarak değil "DOCument" içinde –

+0

Bence soru tüm kelimeyi eşleştirmek için LIKE kullanmak, ama başka bir kelimenin bir parçası olarak değil. – FishBasketGordo

1

Bazı OR'ler, BENZER '% doc%' GİBİ VEYA 'doc%' GİBİ VEYA '% doc' GİBİ VEYA 'doc'

+0

+ 1'i arayamaz. "Doc" da dahil olmak üzere, ancak daha iyi yazılabilir Orada. –

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

+1 "Doküman" durumunu eklemek için –

İlgili konular