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

问题描述 投票:0回答:18

为什么不起作用?

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

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

正确的查询是什么?

mysql syntax
18个回答
6
投票

你也可以试试这个-

SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '[aeiouAEIOU]$';

2
投票

您的查询有语法错误,对于每个“或”,您需要将“or”改为“city”。另外,请记住,在大多数 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;

2
投票

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

select distinct city
from station
where substring(city,len(city),1) in ('a','e','u','o','i')
order by city;

2
投票

使用MySQL;

select distinct CITY 
from STATION 
where right(city,1) in ('a', 'e', 'i', 'o', 'u');

2
投票

从 STATION 中选择不同的城市,其中 CITY 类似 '%[a,e,i,o,u]';


1
投票

尝试使用 MySQL 解决方案:

select distinct CITY from STATION where substr(CITY, -1, 1) in ('a','e','i','o','u');

这里“distinct”将解决重复值的问题,“substring”函数从字符串中提取子字符串。子字符串还包含 start 和 length 。 有关更多详细信息,请点击链接:- https://www.w3schools.com/sql/func_mysql_substr.asp


1
投票

我是这样解决的:

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

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


1
投票

据我所知,这是 HackerRank SQL 练习题中列出的问题之一。

有 2 种类型的问题:-

  1. 以元音字母开头的城市名称
  2. 以元音字母结尾的城市名称

两人的答复如下:

以元音开头:

SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[aeiouAEIOU]';

以元音结尾:

SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '[aeiouAEIOU]$';

0
投票

在 MS SQL 服务器中尝试这个

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

0
投票
select CITY
from STATION
where right(lower(CITY),1) in ('a','e','i','o','u')
group by CITY;

0
投票

在 MySQL 中使用正则表达式会是这样的:

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

0
投票

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

SELECT DISTINCT CITY FROM STATION WHERE SUBSTRING(CITY,-1,1) NOT IN ('a','e','i','o','u')

0
投票

对于 Mysql,这对我有用 -

select DISTINCT(CITY) from STATION 
where CITY REGEXP '[aeiou]$';

0
投票
Select distinct city 
from Station 
where lower(SUBSTR(city,length(city),1))in ('a','e','i','o','u');

0
投票

简单但容易

选择不同的(城市) 从车站出发 其中 substr(City,LENGTH(CITY),Length(City)) in ('a','e','i','o','u')


0
投票
SELECT DISTINCT(CITY)
FROM STATION
WHERE CITY LIKE '%[aeiou]';

0
投票

对于 SQL 试试这个,它对我有用:

选择不同的(城市) 从车站出发 WHERE SUBSTR(LOWER(CITY), 1,1) in ('a', 'e', 'i', 'o', 'u') AND SUBSTR(LOWER(CITY), -1, 1) in ('a', 'e', 'i', 'o', 'u');

substr(lower(CITY), 1,1) 表达式提取城市名称的第一个字母(将其转换为小写后)。同样, substr(lower(CITY), -1, 1) 提取城市名称的最后一个字母(也是小写)。

所以,第一个条件中的1代表城市名称中第一个字符(即第一个字母)的位置。同样,第二个条件中的 1 表示城市名称中最后一个字符(即最后一个字母)的位置。


-1
投票

在MsSql中 试试这个:

SELECT DISTINCT CITY FROM STATION WHERE RIGHT(CITY,1) IN  ('a', 'e', 'i', 'o', 'u');
© www.soinside.com 2019 - 2024. All rights reserved.