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

Cha*_*wla 2 regex sql oracle regexp-like

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

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

select city from station where REGEXP_LIKE(city,'[^aeiou]+');
Run Code Online (Sandbox Code Playgroud)

但这似乎并不正确。

请帮我解决这个问题。

Zay*_*hin 18

使用SUBSTR

select t.city from station t where lower(SUBSTR(city,1,1)) in ('a','e','i','o','u')
Run Code Online (Sandbox Code Playgroud)

  • 请在您的答案中添加一些描述。 (4认同)
  • @SagarChauhan 我认为仅仅谈论子字符串就足够了 (2认同)

小智 8

另一种获取输出的方法

select distinct CITY from STATION where left(city,1) in ('a', 'e', 'i', 'o', 'u')
Run Code Online (Sandbox Code Playgroud)


dar*_*ova 8

所有 3 个都适用于 MySQL

  1. 通过使用正则表达式
SELECT DISTINCT(CITY)
FROM STATION 
WHERE CITY REGEXP '^[aeiou]';
Run Code Online (Sandbox Code Playgroud)
  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%");
Run Code Online (Sandbox Code Playgroud)
  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');
Run Code Online (Sandbox Code Playgroud)


Gor*_*aca 7

正如 BackSlash 已经评论过的那样,您写错了REGEXP_LIKE模式,您应该将其更改为'^[aeiou].+',或者您甚至可以.+从模式中省略,因为您只对字符串的第一个字母(包含超过 1 个字符)感兴趣:

select city from station where REGEXP_LIKE(city,'^[aeiou]');
Run Code Online (Sandbox Code Playgroud)

带有测试数据的示例

请注意,只会返回以小写元音开头的电台!如果您还想包含大写元音而不是将它们添加到您的模式中:

select city from station where REGEXP_LIKE(city,'^[aeiouAEIOU]');
Run Code Online (Sandbox Code Playgroud)

或使用标志指定REGEXP_LIKE输入模式不区分大小写的内部调用'i',如下所示:

select city from station where REGEXP_LIKE(city,'^[aeiou]', 'i');
Run Code Online (Sandbox Code Playgroud)

带有测试数据的示例

感谢 MT0 的有用评论!

我希望我们有所帮助!