Mysql 如何编写SQL查询以匹配以元音结尾的城市名称?

Mysql 如何编写SQL查询以匹配以元音结尾的城市名称?,mysql,syntax,Mysql,Syntax,为什么它不起作用 从STATION查询以元音(a、e、i、o、u)结尾的城市名称列表。我们的结果不能包含重复项 SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE '%A' OR CITY LIKE '%E' OR LIKE '%I' LIKE '%O' OR LIKE '%U' ORDER BY CITY; 正确的查询是什么?您的查询有语法错误,对于每个“or”,您需要将city-like替换为or。此外,请记住,在大多数dbms中,它是区

为什么它不起作用

从STATION查询以元音(a、e、i、o、u)结尾的城市名称列表。我们的结果不能包含重复项

SELECT DISTINCT CITY FROM STATION 
WHERE CITY LIKE '%A' OR CITY LIKE '%E' OR LIKE '%I' LIKE '%O' OR LIKE '%U' 
ORDER BY CITY;

正确的查询是什么?

您的查询有语法错误,对于每个“or”,您需要将city-like替换为or。此外,请记住,在大多数dbms中,它是区分大小写的。如果您想同时忽略大写和小写,请这样做。我使用的是mysql语法,不同的dbms对lcase有不同的功能

SELECT DISTINCT CITY FROM STATION WHERE lcase(CITY) LIKE '%a' OR lcase(CITY) LIKE '%e' OR lcase(CITY) LIKE '%i' or lcase(CITY) LIKE '%o' OR lcase(CITY) LIKE '%u' ORDER BY CITY;

我这样解决了那个问题。与逐个检查最后一个字符不同,我认为检查是否使用in运算符更容易

select distinct city
from station
where substring(city,len(city),1) in ('a','e','u','o','i')
order by city;
你也可以试试这个-

SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '[aeiouAEIOU]$';
在MsSql中 试试这个:

SELECT DISTINCT CITY FROM STATION WHERE RIGHT(CITY,1) IN  ('a', 'e', 'i', 'o', 'u');

尝试MySQL解决方案:

select distinct CITY from STATION where substr(CITY, -1, 1) in ('a','e','i','o','u');
这里“distinct”将解决重复值的问题,“substring”函数从字符串中提取substring。子字符串还包含开始和长度。
有关更多详细信息,请访问链接:-

在MS SQL server中尝试此操作

select distinct(city) from station where city like '%[a,e,i,o,u]' order by city;

在MySQL中使用正则表达式如下:

SELECT DISTINCT(CITY) FROM STATION WHERE REGEXP_LIKE(CITY, '[aiueo]$', 'i') ORDER BY CITY;
SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(CITY,'[aeiou]$','i');

可以使用子字符串来解决这个问题

SELECT DISTINCT CITY FROM STATION WHERE SUBSTRING(CITY,-1,1) NOT IN ('a','e','i','o','u')
我是这样解决的:

SELECT DISTINCT(CITY) FROM STATION WHERE REGEXP_LIKE(CITY, '[aiueo]$', 'i') ORDER BY CITY;
SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(CITY,'[aeiou]$','i');

在这种情况下,结尾的“i”被称为“标志”,这意味着元音可以是大写或小写。

“不工作”不能传达任何有用的信息。它应该做什么?它在干什么?有什么问题吗?语法错误?意外输出?您缺少几个“or”,还有几个城市……感谢您的回复,罗宾。如果已接受的答案使用了另一个,为什么要使用如此复杂的方式?你能解释一下为什么你的成绩会更好吗?