在 SQL 中,我想显示所有以元音结尾的城市的名称
Posted
技术标签:
【中文标题】在 SQL 中,我想显示所有以元音结尾的城市的名称【英文标题】:In SQL I want to display the names of all those cities which end with an vowel 【发布时间】:2015-08-29 09:55:19 【问题描述】:我写了以下查询
SELECT UNIQUE
CITY
FROM
STATION
WHERE
(CITY LIKE '%A' OR
CITY LIKE '%E' OR
CITY LIKE '%I' OR
CITY LIKE '%O' OR
CITY LIKE '%U')
ORDER BY
CITY;
这有什么问题?
【问题讨论】:
【参考方案1】:我认为你可以像这样使用REGEXP_LIKE
:
SELECT UNIQUE CITY
FROM STATION
WHERE REGEXP_LIKE(CITY, '[AaEeIiOoUu]$')
ORDER BY CITY;
【讨论】:
【参考方案2】:如果你想让它使用小写/大写字母,你可以使用UPPER(CITY)
,否则一切都很好。
【讨论】:
【参考方案3】:这对我有用(Oracle 11g):
select distinct
s.city
from
station s
where
upper(substr(s.city,-1,1)) in ('A','E','I','O','U');
【讨论】:
【参考方案4】:我们可以为regexp
提供另一个参数来处理区分大小写:
i
- 不区分大小写,
c
- 区分大小写
例如:
select distinct city
from station
where regexp_like(city,'[aeiou]$','i')
order by city
【讨论】:
【参考方案5】:在我看来,这样做会更容易:
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE '%[AaEeIiOoUu]'*
【讨论】:
【参考方案6】:使用upper函数。此函数将帮助您将文本的字母大写。
SELECT DISTINCT CITY
FROM STATION
WHERE UPPER(CITY) LIKE '%A'
OR UPPER(CITY) LIKE '%E'
OR UPPER(CITY) LIKE '%I'
OR UPPER(CITY) LIKE '%O'
OR UPPER(CITY) LIKE '%U';
【讨论】:
【参考方案7】:以下解决方案适用于 Oracle DB:
select distinct(city)
from station
where UPPER(substr(city,1,1))
in ('A','E','I','O','U');
如果您不使用UPPER,那么您的城市名称以小写字母开头的测试用例将失败。
【讨论】:
【参考方案8】:SELECT UNIQUE CITY FROM STATION
WHERE
(CITY LIKE 'A%' OR
CITY LIKE 'E%' OR
CITY LIKE 'I%' OR
CITY LIKE 'O%' OR
CITY LIKE 'U%');
% 通配符应该在字母之后
【讨论】:
【参考方案9】:在 mysql 中
select distinct city
from Station
where ( city regexp '.[aeiou]$' );
【讨论】:
【参考方案10】:您可以将此代码用于您的目的!!
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')
【讨论】:
【参考方案11】:使用正则表达式
SELECT DISTINCT(name) FROM city WHERE LOWER(name) RLIKE '.*[aeiou]$'
【讨论】:
【参考方案12】:我认为是这样的
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';
【讨论】:
【参考方案13】:最简单的就是使用正则表达式:
SELECT
CITY
FROM
STATION
WHERE
CITY RLIKE "[aeiouAEIOU]$";
【讨论】:
【参考方案14】:SELECT
Distinct(CITY)
FROM
STATION
WHERE
UPPER(SUBSTR(CITY,1,1)) IN ('A','E','I','O','U');
它在 MySQL 中运行。
【讨论】:
您好,为了让您的答案更具可读性,您可以使用 markdown 将其包装在代码块中。【参考方案15】:SELECT UNIQUE CITY
FROM STATION
WHERE UPPER(SUBSTR(CITY,LENGTH(CITY),1)) IN ('A','E','I','O','U');
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案16】:在 SQL Server 中,这可能是答案的其他版本
select distinct city
from station
where right(city,1) in ('a','e','i','o','u')
【讨论】:
【参考方案17】:对于甲骨文
select DISTINCT(CITY) from STATION where upper(SUBSTR(CITY,-1,1)) IN ('A','I','O','E','U');
【讨论】:
【参考方案18】:如果您使用的是 MySQL,请尝试以下解决方案:
SELECT UNIQUE CITY
FROM STATION
WHERE (CITY REGEXP '%A$' OR CITY REGEXP '%E$' OR CITY REGEXP '%I$' OR CITY REGEXP '%O$' OR CITY REGEXP '%U$')
ORDER BY CITY;
【讨论】:
以上是关于在 SQL 中,我想显示所有以元音结尾的城市的名称的主要内容,如果未能解决你的问题,请参考以下文章