【问题标题】:In SQL I want to display the names of all those cities which end with an vowel在 SQL 中,我想显示所有以元音结尾的城市的名称
【发布时间】: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;

这有什么问题?

【问题讨论】:

    标签: sql oracle


    【解决方案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;
                                  

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2019-12-27
                                    • 2020-06-22
                                    • 2018-06-02
                                    • 2022-11-17
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2021-09-20
                                    相关资源
                                    最近更新 更多