2014-01-21 17 views
1

我有簡單的SQL查詢:「%」,這不會有字母「A」的「u」,「O」,它

SELECT * FROM keys WHERE key LIKE ‘a%o%u’ 

但我想僅此列,其中key有第一個字母「a」,居中「o」,最後一個字母「u」,並且他們之間沒有字母a,o和u。

+1

測試當你看到O需求是在中心,你的意思是中心,或隨便找個地方之間(無論哪種方式,我猜你需要一個正則表達式)? –

+0

使用正則表達式。 REGEX大師將能夠告訴你哪一個。 – Strawberry

+0

http://stackoverflow.com/questions/2821419/regular-expression-starting-and-ending-with-a-letter-accepting-only-letters – Hituptony

回答

1

使用RLIKE。我目前正在使用手機,因此無法發佈完整答案。你可以查閱mysql手冊來獲取RLIKE/REGEXP。

0

嘗試......

SELECT * FROM WHERE鍵(按鍵LIKE '百分比' 或關鍵LIKE '%0%' 或關鍵LIKE '%U')和(關鍵NOT LIKE「%A% 'AND key not like'%o%'and key not LIKE'%u%');

該聲明對我來說沒有多大意義,特別是字母'o'的條件。第一種情況表示'o'應該在中心,然後第二種情況表示在兩者之間沒有'o'。但我想你想要的應該轉化爲此。 :)

1

你真正在這裏尋找的是一個正則表達式。謝天謝地,這可以做到。請看下面的表達式爲您的需求:

a([^aou]*[o]{1}[^aou]*)?u 

這只是需要被添加到WHERE條款:

SELECT * FROM keys WHERE `key` REGEXP 'a([^au]*[o]{1})*u' 

並幫助理解正則表達式,這裏的說明和演示:

Regular expression visualization

Debuggex Demo

+0

有了這個「au」就可以了。在o和u之間不可能有字符。 – fancyPants

+0

@fancyPants,更具體請給我一個例子,打破它,我會得到它的修改。 –

+0

就像我說的,「au」打破了它,因爲那裏必須有一個「o」。最小的字符串是「aou」。另一個例子,「哎喲」是不可能的。 – fancyPants

1

我沒有測試更多,但是你可以很容易與您的數據

like 'a[^aou]%o%[^aou]%u' 
+0

我認爲應該有「%」之後,「[^ aou]」 – Piotrek

+0

誰上傳呢? LIKE不支持除%和_之外的任何通配符。 – fancyPants

2
SELECT * FROM keys WHERE `key` REGEXP 'a[^aou]*o[^aou]*u' 

Regular expression visualization

+0

真棒圖片,我從來沒有見過它。 (我剛剛在debuggex上註冊) – Melon

+0

我在PHPMyAdmin啓動它時得到這個「#1139 - 從正則表達式」 – Piotrek

+0

@ Ludwik11得到錯誤'重複運算符操作數無效'更正了它,請重試。 – fancyPants

相關問題