在 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 中,我想显示所有以元音结尾的城市的名称的主要内容,如果未能解决你的问题,请参考以下文章

获取城市名称不以元音开头或不以元音结尾

用于检查名称是不是以元音开头和结尾的 SQL 查询

不以元音开头或结尾的单词的正则表达式?

SQL 查询以查找以 \\FileName 结尾的名称

sql 在SQL SERVER中检索以相同字母开头和结尾的名称

正则表达式:字符串中重复相同的元音 - Oracle SQL