2014-09-10 138 views
0

目前,我有下面的代碼MySQL的SELECT值超過三個字

select * 
FROM list 
WHERE name LIKE '___' 
ORDER BY name; 

我想獲得它,使它只顯示有三個或以上字的名字。 它只顯示帶有三個字符的名稱 我似乎無法找出正確的語法。

任何幫助表示讚賞 三江源

+0

你的意思是三個字母或單詞? – 2014-09-10 13:11:15

+0

三個字@OvaisKhatri – Seb 2014-09-10 23:43:30

回答

3

如果您認爲有沒有雙空格,你可以這樣做:

WHERE name like '% % %' 

用三個或更多詞彙來獲得名字。

如果你可以有雙空格(或其他標點符號),那麼你可能想要一個正則表達式。例如:

WHERE name REGEXP '^[^ ]+[ ]+[^ ]+.*$' 
+0

我懷疑有這樣一個更優雅的解決方案 - 但是我在正則表達式中絕對不好 - – Strawberry 2014-09-10 13:16:21

+0

'WHERE這樣的名字就像'%%%%'只會得到4個或更多字的名字。 – Linger 2014-09-10 13:21:02

+0

將其更改爲四個或更多的單詞將如下所示WHERE標題REGEXP'^ [^] + [] + [^] + [] + [^] + [] + [^]。* $' – Seb 2014-09-10 13:21:54

0

我相信你是什麼後

SELECT * 
FROM list 
WHERE name LIKE '% % %' 
ORDER BY name; 
0

你可以計算字數,然後選擇那些誰是相等或更大,然後3個單詞。

SELECT * FROM list 
    HAVING LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1 >= 3 
    ORDER BY name 

DEMO HERE

*即使你有多重空間也不會影響到這裏檢查this