如何在 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 以元音字母开头的城市名称。
我正在解决 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 以元音字母开头的城市名称。