这是我使用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语句并检查该单词是否包含其名称中的所有字母,而不管顺序如何。
答案 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' ...