SQL查询以查找包含所有元音的表中的所有值。

时间:2017-07-22 18:32:51

标签: mysql 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语句并检查该单词是否包含其名称中的所有字母,而不管顺序如何。

2 个答案:

答案 0 :(得分: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 :(得分:1)

还有其他选择但没有更短的选择。下面是几个例子。

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

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

mysql 5.7 pattern matching documentation也可能有帮助)