2009-12-16 23 views

回答

22

我假定你的意思一致,除了那些「PDD」,其中「PDD」爲開頭的所有行。

SELECT * FROM table WHERE column LIKE '_%pdd%'. 

的「_」通配符在LIKE謂詞表示「任意字符之一,」等同於「.」正則表達式中。

+0

對不起,但沒有。這在'pdd hello pdd'這樣的情況下不起作用,因爲第一個p匹配'_',而其餘的字符串(包括另一個'「pdd」')將匹配'%pdd%'。 OP從來沒有提到「pdd」字符串在字符串中始終是唯一的,所以它的多次出現,其中之一在開始時會使該解決方案不起作用。 OP,考慮不接受這個答案(因爲它是不正確的),並接受quosoo或Marc的答案。 – DiegoDD 2014-01-27 23:35:03

+0

@DiegoDD,這是一個很好的觀點,我忽略了模式出現兩次的可能性。這是一個古老的問題,我希望聽到OP就此事發表意見。但是既然他接受了,我會認爲它適合他需要的情況。 – 2014-01-28 01:40:21

+0

我同意這一事實,即我發現OP是有用的,沒有任何問題,但由於這是一個社區網站,因此您可以編輯答案,說明它不會在這種情況下工作,因爲其他人很可能找到答案(就像我做的那樣),並且作爲一個老問題並沒有使它不那麼有用或無效。謝謝回覆。 – DiegoDD 2014-01-28 15:47:57

0

嘗試:

SELECT * FROM table WHERE column NOT LIKE 'pdd%' 
+1

該OP似乎想匹配'pdd',除了在列的開頭 - 這不會那麼做... – 2009-12-16 22:30:52

+0

閱讀爲理解 – 2009-12-16 22:37:27

5

如果我理解您的要求正確,你需要的是:

SELECT * FROM table WHERE column LIKE '%pdd_%' and column NOT LIKE 'pdd_%' 
4
SELECT * FROM table WHERE column LIKE '%pdd%' AND column NOT LIKE 'pdd%' 

您可以根據這些事件如何常見的是在你的表優化查詢。

相關問題