2017-03-20 25 views
1

我需要用正則表達式幫助這個SQL喜歡,但沒有的單詞正則表達式

我找我的表中的單詞「約翰」。我從一個簡單的查詢開始

select * from tblA where Line like '%john%' 

這個確定。但我有像「VarJohnA」或「WowJohnCool」的結果。我特別尋找的是更像,例如

1. 'John ' (begins with J ends with white space) 
2. ' John ' (begins with white space ends with white space) 
3. 'John,' (begins with J ends with comma) 
4. ',john,' (begins with comma ends with comma) 
5. ' John,' (begins with white space ends with comma) 

現在你可能會建議編寫一個SQL如下。

select * from tblA where Line like '% john %' 
or Line like 'john %' 
or Line like '%john,%' 
or Line like '%,john,%' 
or Line like '% john,%' 

但是這不是我所期待的,因爲上面的5發子彈是一個我能想到的,有可能無數

'"John"' 

'"John' 

'<John' 
'=John' 
'=John+' 

誰知道還有什麼。

我想我正在尋找更準確的結果基本上。我想找到「John」,但「john」不在a-z範圍內。 所以正則表達式將是這樣的

select * from tblA where line not like '[a-z]John[a-z]' 

select * from tblA where line not like '%[^a-z]John[^a-z]%' 

但沒有工作。

但簡而言之,我在尋找單詞「約翰」,但約翰絕不能在a-z個字符之間。

請指教

謝謝

回答

0

這個怎麼樣?

where ' ' + replace(Line, ',', ' ') + ' ' like '% john %' 

或者,對於非字母一般:

where ' ' + Line + ' ' like '%[^a-zA-Z]john[^a-zA-Z]%' 
+0

第二個作品。但我現在很困惑,我認爲它應該是「不喜歡」而不是「喜歡」? – BobNoobGuy

+0

@BobNoobGuy。 。 。我不明白你的困惑。目標是在列中找到「john」。 –