如何在 SQL 的 Like 运算符中获取元音?

How to get vowels in Like operator of SQL?

我正在解决 SQL 来自 Hackerrank 的问题。我必须进行查询,以便它为我提供所有以 a、e、i、o 或 u 开头的城市名称。我正在使用 Like 运算符,但答案仍然错误。

问题来了Link

这是我的解决方案-

SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE '[AEIOU]%'

谁能解释一下?

LIKE 不支持该模式。您需要正则表达式匹配:

SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[AEIOU]'

在正则表达式中,^表示字符串的开始,方括号定义了一个自定义字符class(意思是第一个字符必须属于那个列表)

另一方面,如果您要使用 LIKE,您将需要多个条件,这会使代码更长(并且可能效率更低):

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 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)很有效

SELECT DISTINCT CITY FROM STATION WHERE LEFT(CITY, 1) IN ('A', 'E', 'I', 'O', 'U');

这 return 以元音字母开头的城市名称。