5

从 中查询以元音开头的名称列表CITY(即 a、e、i、o 或 u)STATION

我的答案/尝试过的代码是:

select city from station where REGEXP_LIKE(city,'[^aeiou]+');

但这似乎并不正确。

请帮我解决这个问题。

4

16 回答 16

8

正如 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 的有用评论!

我希望我们有所帮助!

于 2019-02-28T09:35:32.177 回答
7

利用SUBSTR

select t.city from station t where lower(SUBSTR(city,1,1)) in ('a','e','i','o','u')
于 2019-02-28T07:12:14.920 回答
6

另一种获取输出的方法

select distinct CITY from STATION where left(city,1) in ('a', 'e', 'i', 'o', 'u')
于 2021-01-05T04:35:51.550 回答
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

于 2020-07-17T09:30:04.707 回答
1

所有 3 都适用于 MySQL

  1. 通过使用正则表达式
SELECT DISTINCT(CITY)
FROM STATION 
WHERE CITY REGEXP '^[aeiou]';
  1. 通过使用 OR
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%");
  1. 通过使用SUBSTR(string, start, length).
    SUBSTR 是基于 1 的索引。
    因此,意味着从列SUBSTR(CITY, 1, 1)中提取长度为 1 的位置 1 的子字符串 。CITY
SELECT DISTINCT(CITY)
FROM STATION 
WHERE SUBSTR(CITY, 1, 1) IN ('A', 'E', 'I', 'O', 'U');
于 2021-08-20T06:55:38.160 回答
1

在 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');
于 2021-02-05T05:48:47.490 回答
1

这可以通过使用 substring 和 lower 函数来解决:

SELECT CITY FROM STATION WHERE LOWER(SUBSTR(CITY,1,1)) in ('a','e','i','o','u');

substring 将找到字符串的第一个字符,而 lower 函数使这个第一个字符变小。一旦我们找到较低的第一个字符,我们就可以通过使用 IN 运算符来确定它是否是元音。

于 2021-09-03T11:47:58.013 回答
0

对于 Mysql,这对我有用-

  select DISTINCT(CITY) from STATION 
  where CITY REGEXP '^[aeiou].*';
于 2021-06-27T15:46:20.003 回答
0
SELECT DISTINCT CITY FROM STATION WHERE SUBSTR(CITY,1,1) IN ('A','E','I','O','U')
于 2021-03-02T08:03:24.390 回答
0
select distinct city from station where city ~*'^(a|e|i|o|u)[a-z]$';

这是为 Postgres 准备的

于 2021-07-21T03:54:13.957 回答
0

以下解决方案适用于 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%';
于 2021-07-05T16:01:20.257 回答
0
select distinct city from station where regexp_like(city, ‘^[aeiou]’, ‘i’)

此外,对于以元音 '[aeiou]$' 结尾和以元音 '^[aeiou]$' 开头和结尾,$- 结尾,^ 开头,i- 不区分大小写,将选择以结尾的城市大写也是如此。

于 2021-06-05T20:26:49.343 回答
0
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;
于 2021-12-20T07:42:30.240 回答
0
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%";
于 2021-12-06T05:03:05.450 回答
0

这对我有用

SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[aeiou]'
于 2019-10-12T15:46:42.683 回答
-1
SELECT distinct(city)
FROM station
WHERE city LIKE '[a,e,i,o,u]%'
于 2020-12-05T16:30:07.477 回答