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

Sql 获取城市名称不要以元音开头或以元音结尾,sql,Sql,从电台查询不以元音开头或不以元音结尾的城市名称列表。您的结果不能包含重复项 输入格式 车站表描述如下: 我写了下面的查询,但效果很好。有什么建议吗 从城市不象“^[aeiouAEIOU].[aeiouAEIOU]$”的车站选择不同的城市假设您使用的是MySQL,下面是您要查找的内容 select distinct city from station where not lower(substr(city,1,1)) in ('a','e','i','o','u') or not

从电台查询不以元音开头或不以元音结尾的城市名称列表。您的结果不能包含重复项

输入格式

车站表描述如下:

我写了下面的查询,但效果很好。有什么建议吗


从城市不象“^[aeiouAEIOU].[aeiouAEIOU]$”的车站选择不同的城市

假设您使用的是MySQL,下面是您要查找的内容

select distinct city
from station 
where not lower(substr(city,1,1)) in ('a','e','i','o','u')
      or not lower(substr(city,-1,1)) in ('a','e','i','o','u');
选择城市与车站不同的城市,如“^[^aeiouAEIOU].*.[^aeiouAEIOU]$”

select distinct city
from station 
where not lower(substr(city,1,1)) in ('a','e','i','o','u')
      or not lower(substr(city,-1,1)) in ('a','e','i','o','u');

脚注:和

此SQL查询将对您有所帮助。 如果您使用的是MS SQL,请遵循以下代码行:

SELECT DISTINCT CITY 
FROM STATION  
WHERE CITY NOT LIKE '[AEIOU]%' OR CITY NOT LIKE '%[aeiou]';
SELECT DISTINCT CITY 
FROM STATION 
WHERE (CITY NOT IN (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'))
OR 
(CITY NOT IN (SELECT CITY FROM STATION WHERE CITY LIKE 'A%' OR CITY LIKE 'E%' OR CITY LIKE 'I%' OR CITY LIKE 'O%' OR CITY LIKE 'U%'));
如果您使用的是MySQL,请遵循以下代码行:

SELECT DISTINCT CITY 
FROM STATION  
WHERE CITY NOT LIKE '[AEIOU]%' OR CITY NOT LIKE '%[aeiou]';
SELECT DISTINCT CITY 
FROM STATION 
WHERE (CITY NOT IN (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'))
OR 
(CITY NOT IN (SELECT CITY FROM STATION WHERE CITY LIKE 'A%' OR CITY LIKE 'E%' OR CITY LIKE 'I%' OR CITY LIKE 'O%' OR CITY LIKE 'U%'));
请尝试以下操作:

SELECT city 
FROM station 
WHERE left(city,1) not regexp 'a|e|i|o|u' or right(city,1) not regexp 'a|e|i|o|u' 
GROUP BY city
SELECT city 
FROM station 
WHERE left(city,1) not regexp 'a|e|i|o|u' or right(city,1) not regexp 'a|e|i|o|u' 
GROUP BY city

如果您使用的是
Oracle
,此SQL查询将对您有所帮助:

SELECT DISTINCT city
FROM station
WHERE regexp_like (city, '^[^aeiouAEIOU].*') 
OR regexp_like (city, '.*[^aeiouAEIOU]$');
如果您使用的是Oracle,另一个答案是:

SELECT DISTINCT (CITY) 
FROM STATION 
WHERE NOT regexp_like(lower(CITY),'^[aeiou].*[aeiou]$');
您必须将插入符号字符放在方括号内,这意味着没有任何元音。解释是我用过的吗

SELECT DISTINCT CITY FROM STATION
WHERE CITY NOT LIKE 'a%' 
AND CITY NOT LIKE 'e%'
AND CITY NOT LIKE 'i%'
AND CITY NOT LIKE 'o%'
AND CITY NOT LIKE 'u%'
AND CITY NOT LIKE '%a' 
AND CITY NOT LIKE '%e'
AND CITY NOT LIKE '%i'
AND CITY NOT LIKE '%o'
AND CITY NOT LIKE '%u'
试试这个:

select DISTINCT city from STATION 
where  (CITY NOT LIKE 'a%'
        AND CITY  NOT LIKE 'e%'
        AND CITY NOT LIKE 'i%' 
        AND CITY NOT LIKE 'o%'
        AND CITY NOT LIKE 'u%')
OR (CITY NOT LIKE '%a' AND
    CITY  NOT LIKE '%e' AND
    CITY NOT LIKE '%i' AND 
    CITY NOT LIKE '%o' AND 
    CITY NOT LIKE '%u')
SELECT DISTINCT CITY FROM STATION WHERE CITY NOT RLIKE '^[aeiouAEIOU]' 
AND
CITY NOT RLIKE '[aeiouAEIOU]$'
这对我有用

SELECT DISTINCT CITY FROM STATION WHERE NOT CITY RLIKE '^[AEIOUaeiou]' AND NOT CITY RLIKE '.*[AEIOUaeiou]$' 
Oracle解决方案:

选择与所处车站不同的城市
不象REGEXP_(上(城市),“^[AEIOU]”或
不象REGEXP_(上(城市),“[AEIOU]$”;

正确回答这个问题

SELECT DISTINCT CITY FROM STATION
WHERE NOT CITY RLIKE '^[AEIOUaeiou]' AND NOT CITY RLIKE '.*[AEIOUaeiou]$';
mysql查询:
从城市非REGEXP'^[aeiouAEIOU].[aeiouAEIOU]$所在的车站选择不同的城市

以下查询应该执行您想要的操作。它成功地为我工作

select distinct city
from station 
where not lower(substr(city,1,1)) in ('a','e','i','o','u')
      or not lower(substr(city,-1,1)) in ('a','e','i','o','u');
SELECT DISTINCT CITY 
FROM STATION
WHERE CITY NOT RLIKE '^[aeiouAEIOU]' OR CITY NOT RLIKE '[aeiouAEIOU]$'

这对我使用MYSQL很有效。我还按城市对结果进行分组,这是不需要的…只是更漂亮:

select distinct CITY
from STATION
where CITY NOT RLIKE '^[aeiouAEIOU]'
  OR CITY NOT RLIKE '[AEIOUaeiou]$'
GROUP BY CITY;

您可以在MySQL上尝试以下方法:

SELECT DISTINCT(CITY) 
FROM STATION 
WHERE CITY NOT REGEXP '^[aeiou]' 
    AND CITY NOT REGEXP '[aeiou]$';

此查询将为所问问题提供所需的输出。

这将按照您希望的方式工作:


这就是你要找的bro。

假设你在黑客排名上看到了这个问题,并且给出了表站模式的屏幕截图,也说明了同样的问题。这是我的答案,它在MYSQL中对我有效

SELECT distinct city FROM station 
WHERE City not LIKE '[aeiou]%' and CITY NOT LIKE '%[aeiou]'
select DISTINCT(city) from STATION where CITY REGEXP '^[^aeiou]' or CITY REGEXP '.*[^aeiou]$';


这是MS SQL SERVER所需的解决方案

从城市不象“[aeiouAEIOU]”和城市不象“[aeiouAEIOU]”的站点中选择不同的城市
这个怎么样:

SELECT CITY from STATION WHERE LOWER(CITY) NOT REGEXP '^[aeiou].*[aeiou]$' GROUP BY CITY
试试这个:

select DISTINCT city from STATION 
where  (CITY NOT LIKE 'a%'
        AND CITY  NOT LIKE 'e%'
        AND CITY NOT LIKE 'i%' 
        AND CITY NOT LIKE 'o%'
        AND CITY NOT LIKE 'u%')
OR (CITY NOT LIKE '%a' AND
    CITY  NOT LIKE '%e' AND
    CITY NOT LIKE '%i' AND 
    CITY NOT LIKE '%o' AND 
    CITY NOT LIKE '%u')
SELECT DISTINCT CITY FROM STATION WHERE CITY NOT RLIKE '^[aeiouAEIOU]' 
AND
CITY NOT RLIKE '[aeiouAEIOU]$'
此代码适用于MS SQL SERVER。

适用于MySQL
从城市注册表“^[^aeiou]|[^aeiou]$”所在的车站选择不同的城市

这是哪个数据库?大多数数据库不支持正则表达式。使用数据库支持的函数。它以什么方式不起作用?您使用的是什么?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加一个标记,
postgresql
oracle
sqlserver
db2
,…@AriSingh:实际上大多数DBMS都支持正则表达式。但是由于没有真正的SQL标准(至少对于真正的POSIX正则表达式来说),每个DBMS产品的语法都非常不同,“或者/或者”听起来像是允许以元音开头和结尾?您假设OP使用的是
MySQL
。当问题被半心半意地贴上标签时回答,只会让其他提出类似问题的人感到困惑。同意!编辑了我的答案,尽管我只是在OPs答案中修改了查询。尽管MySQL中不同数据库的RLIKE不同,
RLIKE
REGEXP
是等效的。@AnandG MS SQL Server中会有什么?请解释为什么这是一个有效的答案并格式化代码。请,如果您为您的解决方案添加一些解释文本,答案将更加完整。仅包含代码的答案不被视为completeAvoid,使用语句的所有大写字母!欢迎来到SO。您应该添加一些解释,并格式化您的代码(在本例中使用三个反勾号和sql语法提示)。欢迎使用stackoverflow!在提供答案时,请添加上下文来解释代码中发生了什么。仅为代码的答案不完整。在MySQL中工作。关于“^[aeiou].[aeiou]$”,如何理解此处的逗号和星号?我看到这是一个流行的答案,但现在确定如何理解。*1。没有逗号,请检查。2.
*
表示字符串应该从(aeiou)中的任何一个开始,并且可以对该字母进行零次或多次迭代。
select distinct city
from station 
where not lower(substr(city,1,1)) in ('a','e','i','o','u')
      or not lower(substr(city,-1,1)) in ('a','e','i','o','u');
SELECT DISTINCT city
FROM   station
WHERE  city REGEXP '^[^aeiouAEIOU]|[^aeiouAEIOU]$'
SELECT DISTINCT CITY 
FROM STATION 
WHERE 
  SUBSTRING(CITY,1,1) NOT IN ('A','E','I','O','U') 
  OR 
  SUBSTRING(CITY,1,1) NOT IN ('a','e','i','o','u')