我有簡單的SQL查詢:「%」,這不會有字母「A」的「u」,「O」,它
SELECT * FROM keys WHERE key LIKE ‘a%o%u’
但我想僅此列,其中key
有第一個字母「a」,居中「o」,最後一個字母「u」,並且他們之間沒有字母a,o和u。
我有簡單的SQL查詢:「%」,這不會有字母「A」的「u」,「O」,它
SELECT * FROM keys WHERE key LIKE ‘a%o%u’
但我想僅此列,其中key
有第一個字母「a」,居中「o」,最後一個字母「u」,並且他們之間沒有字母a,o和u。
也許這個模式匹配的網頁會幫助你嗎?
http://technet.microsoft.com/en-us/library/ms187489(v=sql.105).aspx
的MySQL: http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
這是否也適用於MySQL? –
對不起。我不確定。我只看到了SQL,因此我假設了MS SQL:S – NickyvV
使用RLIKE。我目前正在使用手機,因此無法發佈完整答案。你可以查閱mysql手冊來獲取RLIKE/REGEXP。
嘗試......
SELECT * FROM WHERE鍵(按鍵LIKE '百分比' 或關鍵LIKE '%0%' 或關鍵LIKE '%U')和(關鍵NOT LIKE「%A% 'AND key not like'%o%'and key not LIKE'%u%');
該聲明對我來說沒有多大意義,特別是字母'o'的條件。第一種情況表示'o'應該在中心,然後第二種情況表示在兩者之間沒有'o'。但我想你想要的應該轉化爲此。 :)
你真正在這裏尋找的是一個正則表達式。謝天謝地,這可以做到。請看下面的表達式爲您的需求:
a([^aou]*[o]{1}[^aou]*)?u
這只是需要被添加到WHERE
條款:
SELECT * FROM keys WHERE `key` REGEXP 'a([^au]*[o]{1})*u'
並幫助理解正則表達式,這裏的說明和演示:
有了這個「au」就可以了。在o和u之間不可能有字符。 – fancyPants
@fancyPants,更具體請給我一個例子,打破它,我會得到它的修改。 –
就像我說的,「au」打破了它,因爲那裏必須有一個「o」。最小的字符串是「aou」。另一個例子,「哎喲」是不可能的。 – fancyPants
我沒有測試更多,但是你可以很容易與您的數據
like 'a[^aou]%o%[^aou]%u'
我認爲應該有「%」之後,「[^ aou]」 – Piotrek
誰上傳呢? LIKE不支持除%和_之外的任何通配符。 – fancyPants
SELECT * FROM keys WHERE `key` REGEXP 'a[^aou]*o[^aou]*u'
真棒圖片,我從來沒有見過它。 (我剛剛在debuggex上註冊) – Melon
我在PHPMyAdmin啓動它時得到這個「#1139 - 從正則表達式」 – Piotrek
@ Ludwik11得到錯誤'重複運算符操作數無效'更正了它,請重試。 – fancyPants
測試當你看到O需求是在中心,你的意思是中心,或隨便找個地方之間(無論哪種方式,我猜你需要一個正則表達式)? –
使用正則表達式。 REGEX大師將能夠告訴你哪一個。 – Strawberry
http://stackoverflow.com/questions/2821419/regular-expression-starting-and-ending-with-a-letter-accepting-only-letters – Hituptony