SQLZOO - 从世界教程#13

时间:2017-03-13 20:46:49

标签: mysql sql

http://sqlzoo.net/wiki/SELECT_from_WORLD_Tutorial#All_the_vowels

赤道几内亚和多米尼加共和国拥有名称中的所有元音(e e o o u)。他们不算数,因为他们名字中有多个单词。

找到包含所有元音且名称中没有空格的国家/地区。 您可以使用短语名称NOT LIKE'%a%'从结果中排除字符。

显示的查询错过了巴哈马和白俄罗斯等国家,因为它们至少包含一个' a'

我认为我可以通过更多蛮力方法来嵌套许多OR语句来做到这一点,但这不起作用,而且我不确定如何排除空间出现。

5 个答案:

答案 0 :(得分:10)

您想要单词中所有的元音,因此您需要使用AND,而不是OR

此外,要从回复中排除某些内容,您可以使用NOT LIKE。除了所有元音条件之外,此排除条件也会计算,因此它也需要与AND链接。

如果您无法自行解决,请将光标移到此块上以查看有效的解决方案:

  

     SELECT名称      来自世界      名称喜欢'%A%'        和名字一样'%E%'        和名字一样'%I%'        和名字一样'%O%'        和名字一样'%U%'        并且名字不喜欢' %%'

(选中this answer's sourcecode以获取格式正确的解决方案)

答案 1 :(得分:1)

如何排除空间

AND NOT LIKE '% %'

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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 '% %'
  • 使用AND(而不是OR),因为您需要所有的元音,而不是其中一个。
  • '%a%'表示其中包含字符'a'的字符串的任何组合。因此,您需要对所有元音执行此操作。
  • 不喜欢'%%',这意味着我们在字符串中不需要任何空格。这意味着它排除名称中包含多个单词的国家。
  • 正确的答案是莫桑比克。只有一个名称符合此条件。
  • 如果您删除代码的最后一行并且名称不喜欢'%%',您将获得刚果民主共和国, 赤道几内亚, 莫桑比克 多米尼加共和国作为答案。尝试一下 !希望对您有帮助!

答案 4 :(得分:-1)

这是一个可行的解决方案:

 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 '% %';

我们包含所有元音,并排除带有空格的名称,这意味着我们不希望有两个单词的国家/地区