获取不以元音开头或以元音结尾的列表字符串

时间:2017-10-30 14:38:21

标签: mysql sql

我想打印所有不以元音开头的城市,也不能以元音结尾。 我知道有很多关于如何做的教程,当它不能以特定的字母开头时。但我无法找到它,表达了几封信。

这就是我的尝试:

select distinct city
from station
where city not like '%[aeiou]%';

所以,如果我说

where city not like '%a'

我将获得不以a字母结尾的城市。

这样做的:

where city not like 'a%'

我将获得不以字母a

开头的城市

所以我尝试:where city not like '%[aeiou]%';是将两者结合起来。我没有抛出错误,它确实给了我一个列表,但只是没有正确的结果。实际上这个名单太大了,以至于我不知道上面写的表达给了我什么。我尝试了其他几次尝试,但这可能是最合格的尝试。

如何获取所有不以元音开头或以元音结尾的城市列表?

3 个答案:

答案 0 :(得分:3)

您只需使用SUBSTRING()功能:

$cookie = Cookie::queue(Cookie::make('CookieName', 'CookieValue', 60));

我也在这里使用WHERE LOWER(SUBSTRING(city, 1, 1)) NOT IN ('a', 'e', 'i', 'o', 'u') AND LOWER(SUBSTRING(city, -1, 1)) NOT IN ('a', 'e', 'i', 'o', 'u') 函数,因此您不必为大写字母重复相同的操作。

答案 1 :(得分:2)

在MySQL中,您将使用正则表达式。这种模式:

where city not like '%[aeiou]%';

将返回所有城市,因为据我所知,没有城市的名称中包含字符序列'[aeiou]'。以上内容将在SQL Server或Sybase中发挥更有意义的作用,like支持这些模式。

正则表达式如下:

where city regexp '^[^aeiouAEIOU].*[^aeiouAEIOU]$'

答案 2 :(得分:1)

我认为这是你正在尝试做的事情:

    declare @Station table (city varchar(100))
    insert into @station select 'Houston'
    insert into @station select 'Astoria'
    insert into @station select 'enigma'


    select distinct 
         city
    from
         @Station
    where
         city not like '[aeiou]%[aeiou]'