【问题标题】:How to get vowels in Like operator of SQL?如何在 SQL 的 Like 运算符中获取元音?
【发布时间】:2020-06-11 09:58:25
【问题描述】:
我正在从 Hackerrank 解决一个关于 SQL 的问题。我必须进行查询,以便它给我所有以 a、e、i、o 或 u 开头的城市名称。我正在使用 Like 运算符,但仍然是错误的答案。
这就是问题Link
这是我的解决方案-
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE '[AEIOU]%'
谁能解释一下?
【问题讨论】:
标签:
mysql
sql
string
where-clause
sql-like
【解决方案1】:
LIKE 不支持该部分。你需要一个正则表达式匹配:
SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[AEIOU]'
在正则表达式中,^ 表示字符串的开头,方括号定义了一个自定义字符类(意味着第一个字符必须属于该列表)。
另一方面,如果您要使用LIKE,则需要多个条件,这会使代码更长(并且可能效率更低):
WHERE
CITY LIKE 'A%'
OR CITY LIKE 'E%'
OR CITY LIKE 'I%'
OR CITY LIKE 'O%'
OR CITY LIKE 'U%'
【解决方案2】:
select distinct city from station where Left(city,1)='A' or Left(city,1)='E' or Left(city,1)='I' or Left(city,1)='O' or Left(city,1)='U';
这对我很有效(MS SQL)
【解决方案3】:
SELECT DISTINCT CITY FROM STATION WHERE LEFT(CITY, 1) IN ('A', 'E', 'I', 'O', 'U');
这将返回以元音开头的城市名称。