从 中查询以元音开头的名称列表CITY
(即 a、e、i、o 或 u)STATION
。
我的答案/尝试过的代码是:
select city from station where REGEXP_LIKE(city,'[^aeiou]+');
但这似乎并不正确。
请帮我解决这个问题。
从 中查询以元音开头的名称列表CITY
(即 a、e、i、o 或 u)STATION
。
我的答案/尝试过的代码是:
select city from station where REGEXP_LIKE(city,'[^aeiou]+');
但这似乎并不正确。
请帮我解决这个问题。
正如 BackSlash 已经评论的那样,您编写了错误的REGEXP_LIKE
模式,您应该将其更改为'^[aeiou].+'
,或者您甚至可以.+
从您的模式中省略,因为您只对字符串的第一个字母(包含超过 1 个字符)感兴趣:
select city from station where REGEXP_LIKE(city,'^[aeiou]');
请注意,这只会返回以小写元音开头的电台!如果您还想包含大写元音而不是将它们添加到您的模式中:
select city from station where REGEXP_LIKE(city,'^[aeiouAEIOU]');
或在REGEXP_LIKE
调用内部指定输入模式不区分大小写的'i'
标志,如下所示:
select city from station where REGEXP_LIKE(city,'^[aeiou]', 'i');
感谢 MT0 的有用评论!
我希望我们有所帮助!
利用SUBSTR
select t.city from station t where lower(SUBSTR(city,1,1)) in ('a','e','i','o','u')
另一种获取输出的方法
select distinct CITY from STATION where left(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”函数从字符串中提取子字符串。子字符串还包含 start 和 length 。有关更多详细信息,请点击链接:- https://www.w3schools.com/sql/func_mysql_substr.asp
所有 3 都适用于 MySQL
SELECT DISTINCT(CITY)
FROM STATION
WHERE CITY REGEXP '^[aeiou]';
SELECT DISTINCT(CITY)
FROM STATION
WHERE (CITY LIKE "A%")
OR (CITY LIKE "E%")
OR (CITY LIKE "I%")
OR (CITY LIKE "O%")
OR (CITY LIKE "U%");
SUBSTR(string, start, length)
. SUBSTR(CITY, 1, 1)
中提取长度为 1 的位置 1 的子字符串 。CITY
SELECT DISTINCT(CITY)
FROM STATION
WHERE SUBSTR(CITY, 1, 1) IN ('A', 'E', 'I', 'O', 'U');
在 MSSQL 服务器上:
SELECT DISTINCT(CITY) FROM STATION WHERE CITY LIKE '[a,e,i,o,u]%' ;
在 MySQL 上:
SELECT DISTINCT(CITY) FROM STATION WHERE SUBSTR(CITY,1,1) IN ('a','e','i','o','u');
这可以通过使用 substring 和 lower 函数来解决:
SELECT CITY FROM STATION WHERE LOWER(SUBSTR(CITY,1,1)) in ('a','e','i','o','u');
substring 将找到字符串的第一个字符,而 lower 函数使这个第一个字符变小。一旦我们找到较低的第一个字符,我们就可以通过使用 IN 运算符来确定它是否是元音。
对于 Mysql,这对我有用-
select DISTINCT(CITY) from STATION
where CITY REGEXP '^[aeiou].*';
SELECT DISTINCT CITY FROM STATION WHERE SUBSTR(CITY,1,1) IN ('A','E','I','O','U')
select distinct city from station where city ~*'^(a|e|i|o|u)[a-z]$';
这是为 Postgres 准备的
以下解决方案适用于 MySQL DATABASE
SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE 'a%' OR CITY LIKE 'e%' OR CITY LIKE 'i%' OR CITY LIKE 'o%' OR CITY LIKE 'u%';
select distinct city from station where regexp_like(city, ‘^[aeiou]’, ‘i’)
此外,对于以元音 '[aeiou]$' 结尾和以元音 '^[aeiou]$' 开头和结尾,$- 结尾,^ 开头,i- 不区分大小写,将选择以结尾的城市大写也是如此。
with cte as (
select CITY ,case when lower(substr(CITY,1,1)) in ('a','e','i','o','u') then 1 else 0 end as Rule2
from STATION
)
select distinct CITY from cte where Rule2=1;
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE "a%" OR
CITY LIKE "e%"
OR CITY LIKE "i%"
OR CITY LIKE "o%"
OR CITY LIKE "u%";
这对我有用
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[aeiou]'
SELECT distinct(city)
FROM station
WHERE city LIKE '[a,e,i,o,u]%'