我有一個SQL查詢SELECT * FROM table WHERE column LIKE '%pdd%'
。MySQL LIKE語句在除字符串開頭之外的任何位置查找子字符串
問題是我需要得到所有結果,不包括那些以「pdd」開頭的結果,我的意思是找到「pdd」不在開頭的所有結果。它怎麼能做到?
當確實不在列的開頭時,我確實需要匹配「pdd」。
我有一個SQL查詢SELECT * FROM table WHERE column LIKE '%pdd%'
。MySQL LIKE語句在除字符串開頭之外的任何位置查找子字符串
問題是我需要得到所有結果,不包括那些以「pdd」開頭的結果,我的意思是找到「pdd」不在開頭的所有結果。它怎麼能做到?
當確實不在列的開頭時,我確實需要匹配「pdd」。
我假定你的意思一致,除了那些「PDD」,其中「PDD」爲開頭的所有行。
SELECT * FROM table WHERE column LIKE '_%pdd%'.
的「_
」通配符在LIKE
謂詞表示「任意字符之一,」等同於「.
」正則表達式中。
嘗試:
SELECT * FROM table WHERE column NOT LIKE 'pdd%'
該OP似乎想匹配'pdd',除了在列的開頭 - 這不會那麼做... – 2009-12-16 22:30:52
閱讀爲理解 – 2009-12-16 22:37:27
如果我理解您的要求正確,你需要的是:
SELECT * FROM table WHERE column LIKE '%pdd_%' and column NOT LIKE 'pdd_%'
SELECT * FROM table WHERE column LIKE '%pdd%' AND column NOT LIKE 'pdd%'
您可以根據這些事件如何常見的是在你的表優化查詢。
對不起,但沒有。這在'pdd hello pdd'這樣的情況下不起作用,因爲第一個p匹配'_',而其餘的字符串(包括另一個'「pdd」')將匹配'%pdd%'。 OP從來沒有提到「pdd」字符串在字符串中始終是唯一的,所以它的多次出現,其中之一在開始時會使該解決方案不起作用。 OP,考慮不接受這個答案(因爲它是不正確的),並接受quosoo或Marc的答案。 – DiegoDD 2014-01-27 23:35:03
@DiegoDD,這是一個很好的觀點,我忽略了模式出現兩次的可能性。這是一個古老的問題,我希望聽到OP就此事發表意見。但是既然他接受了,我會認爲它適合他需要的情況。 – 2014-01-28 01:40:21
我同意這一事實,即我發現OP是有用的,沒有任何問題,但由於這是一個社區網站,因此您可以編輯答案,說明它不會在這種情況下工作,因爲其他人很可能找到答案(就像我做的那樣),並且作爲一個老問題並沒有使它不那麼有用或無效。謝謝回覆。 – DiegoDD 2014-01-28 15:47:57