用单个 IN 或 ANY 运算符替换多个 OR 运算符
Replace multiple OR operators with a single IN or ANY operator
我想查询以元音结尾的城市列表,我希望列表中的每个城市都是不同的。下面提到的代码工作正常,但我想使用 IN 或 ANY operators.I 来实现同样的事情,并附上了我正在使用的 table 的描述图片。谢谢!
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';
Table description
您可以使用regexp_like
SELECT distinct CITY
FROM station
WHERE regexp_like(CITY, '[aeiou]$', 'i');
使用正则表达式
select DISTINCT
City FROM Station
WHERE regexp_like(city,'[aeiou]$')
您可以在此处使用 Oracle 的 REGEXP_LIKE
:
SELECT DISTINCT City
FROM Station
WHERE REGEXP_LIKE(City, '^.*[aeiou]$', 'i');
正则表达式模式 ^.*[aeiou]$
将匹配任何以元音结尾的城市名称。传递给 REGEXP_LIKE
的第三个 i
参数告诉 Oracle 在不区分大小写的模式下进行匹配,以防万一。
如果你想使用in
,你可以:
where substr(city, -1) in ('a', 'e', 'i', 'o', 'u')
如果您还需要处理大写字母,可以使用lower()
。
我想查询以元音结尾的城市列表,我希望列表中的每个城市都是不同的。下面提到的代码工作正常,但我想使用 IN 或 ANY operators.I 来实现同样的事情,并附上了我正在使用的 table 的描述图片。谢谢!
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';
Table description
您可以使用regexp_like
SELECT distinct CITY
FROM station
WHERE regexp_like(CITY, '[aeiou]$', 'i');
使用正则表达式
select DISTINCT
City FROM Station
WHERE regexp_like(city,'[aeiou]$')
您可以在此处使用 Oracle 的 REGEXP_LIKE
:
SELECT DISTINCT City
FROM Station
WHERE REGEXP_LIKE(City, '^.*[aeiou]$', 'i');
正则表达式模式 ^.*[aeiou]$
将匹配任何以元音结尾的城市名称。传递给 REGEXP_LIKE
的第三个 i
参数告诉 Oracle 在不区分大小写的模式下进行匹配,以防万一。
如果你想使用in
,你可以:
where substr(city, -1) in ('a', 'e', 'i', 'o', 'u')
如果您还需要处理大写字母,可以使用lower()
。