为什么不起作用?
从 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;
正确的查询是什么?
你也可以试试这个-
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '[aeiouAEIOU]$';
您的查询有语法错误,对于每个“或”,您需要将“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;
我就是这样解决这个问题的。我认为检查是否使用 in 运算符更容易,而不是逐个检查最后一个字符。
select distinct city
from station
where substring(city,len(city),1) in ('a','e','u','o','i')
order by city;
使用MySQL;
select distinct CITY
from STATION
where right(city,1) in ('a', 'e', 'i', 'o', 'u');
从 STATION 中选择不同的城市,其中 CITY 类似 '%[a,e,i,o,u]';
尝试使用 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
我是这样解决的:
SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(CITY,'[aeiou]$','i');
在这种情况下,末尾的“i”被称为“标志”,这意味着元音可以是大写或小写。
据我所知,这是 HackerRank SQL 练习题中列出的问题之一。
有 2 种类型的问题:-
两人的答复如下:
以元音开头:
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[aeiouAEIOU]';
以元音结尾:
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '[aeiouAEIOU]$';
在 MS SQL 服务器中尝试这个
select distinct(city) from station where city like '%[a,e,i,o,u]' order by city;
select CITY
from STATION
where right(lower(CITY),1) in ('a','e','i','o','u')
group by CITY;
在 MySQL 中使用正则表达式会是这样的:
SELECT DISTINCT(CITY) FROM STATION WHERE REGEXP_LIKE(CITY, '[aiueo]$', 'i') ORDER BY CITY;
你可以使用子字符串来解决这个问题
SELECT DISTINCT CITY FROM STATION WHERE SUBSTRING(CITY,-1,1) NOT IN ('a','e','i','o','u')
对于 Mysql,这对我有用 -
select DISTINCT(CITY) from STATION
where CITY REGEXP '[aeiou]$';
Select distinct city
from Station
where lower(SUBSTR(city,length(city),1))in ('a','e','i','o','u');
简单但容易
选择不同的(城市) 从车站出发 其中 substr(City,LENGTH(CITY),Length(City)) in ('a','e','i','o','u')
SELECT DISTINCT(CITY)
FROM STATION
WHERE CITY LIKE '%[aeiou]';
对于 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 表示城市名称中最后一个字符(即最后一个字母)的位置。
在MsSql中 试试这个:
SELECT DISTINCT CITY FROM STATION WHERE RIGHT(CITY,1) IN ('a', 'e', 'i', 'o', 'u');