2017-07-22 158 views
0

這是我使用過SQL的第一週。它非常簡單,並且相當容易拾取。SQL查詢可查找包含所有元音的表中的所有值。

我不得不寫一個查詢來查找所有包含所有元音('aeiou')的國家和他們的名字中沒有空格。符合這一標準的唯一國家是莫桑比克。

SELECT 
    name 
FROM 
    world 
WHERE 
    name LIKE '%a%' AND name LIKE '%e%' AND name LIKE '%i%' AND name LIKE  
'%o%' AND name LIKE '%u%' AND name NOT LIKE '% %' 

上述查詢工作。我想現在如果有辦法縮短這個,所以我可以使用一個LIKE語句,並檢查這個單詞是否包含所有這些字母在它的名字中沒有順序的問題。

+4

你的方法可能是最好的辦法。 –

回答

1

在PostgreSQL,你能做到這一點,像這樣:

SELECT w.name 
    FROM world AS w 
    WHERE w.name SIMILAR TO '%(a|e|i|o|u)%' 
     AND w.name NOT SIMILAR TO '% %'; 
1

還有其他的選擇,但沒有要短得多。下面有幾個例子。

...WHERE LOCATE('a',name) AND LOCATE('e',name) ... 

...WHERE name REGEXP 'a' AND name REGEXP 'e' ... 

mysql 5.7 pattern matching documentation可以幫助太)

相關問題