SQL-запрос, чтобы найти список имен городов, которые не начинаются с гласных

Я пытаюсь запросить список имен CITY из таблицы STATION, которые не начинаются с гласных с результатами, которые не могут содержать дубликаты. В таблице только id, city, population

Это запрос, который я написал

SELECT DISTINCT CITY FROM STATION 
WHERE CITY RLIKE '[^bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ].*';

Это дает неправильный ответ. Что я здесь делаю неправильно?

Ответ 1

попробуйте это.

SELECT DISTINCT CITY 
FROM STATION 
WHERE CITY NOT RLIKE '^[aeiouAEIOU].*$'

Ответ 2

A ^ в регулярных выражениях могут иметь разные значения, в зависимости от их местоположения. Когда он является первым символом в регулярном выражении, он ссылается на начало строки. Но когда это первый символ в наборе, например [^abc], это означает not one of. И когда он появляется в другом месте, он просто ссылается на ^.

Итак, вам понадобится что-то вроде:

SELECT DISTINCT CITY FROM STATION 
WHERE CITY RLIKE '^[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ].*';

или просто исключите буквы, которые вы не хотите:

SELECT DISTINCT CITY FROM STATION 
WHERE CITY RLIKE '^[^aeiouAEIOU].*';

Ответ 3

Запросить список имен CITY от STATION которые либо не начинаются с гласных, либо не заканчиваются гласными. В ORACLE

select distinct city 
from station 
where regexp_like(city, '^[^aeiouAEIOU]|*[^aeiouAEIOU]$');

В MySQL -

 select distinct city 
 from station 
 where city RLIKE '^[^aeiouAEIOU].*' OR 
 city RLIKE '^.*[^aeiouAEIOU]$';

Ответ 4

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%';

Ответ 6

SELECT DISTINCT CITY from STATION  WHERE CITY RLIKE '^[^aeiouAEIOU].*$'

Ответ 7

select distinct city from station where city regexp
'^[^aeiou].*[^aeiou]$'

Если ваш запрос не начинается и заканчивается гласным.

Ответ 8

Простой пример без регулярных выражений

SELECT DISTINCT 
    City 
FROM Station
WHERE LEFT(City, 1) NOT IN ("a", "e", "i", "o", "u");

Ответ 9

Mysql мы можем использовать это.

select distinct city from station where city regexp '^[^aeiou].*';

Узнать больше о регулярном выражении MySQL

Для Oracle мы можем использовать

select distinct(city) from station where regexp_like (city, '^[^AEIOU](*)');

Узнать больше о регулярном выражении Oracle

Для MS SQL Server

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

Ответ 10

Я попробовал это.

select distinct city
from station
where substring(city,1,1) not in('A','E','I','O','U');

Ответ 11

попробуй это:

SELECT DISTINCT CITY 
FROM STATION 
WHERE CITY NOT REGEXP '[aeiouAEIOU]$'

Ответ 12

SELECT DISTINCT CITY FROM STATION 
WHERE CITY RLIKE '^.*[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$';

Ответ 13

Это работало на MS SQL SERVER:

select distinct city from station where city NOT like '[aeuio]%' Order by City;

Ответ 14

В MS SQL:

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%';

Ответ 15

Ты можешь использовать:

select distinct city from station where city  not RLIKE '^[aeiouAEIOU]'

Ответ 16

выберите отличный CITY из STATION, где left (CITY, 1) не в ('a', 'e', ​​'i', 'o', 'u') или right (CITY, 1) не в ", 'е', 'я', 'о', 'и');

Ответ 17

select DISTINCT CITY from STATION where CITY NOT LIKE '[a,e,i,o,u]%'

Ответ 18

Попробуй это:

SELECT DISTINCT CITY FROM STATION WHERE
LOWER(SUBSTR(CITY,LENGTH(CITY),1)) IN ('a','e','i','o','u');

Ответ 19

Select Distinct City from Station where City Like '[^aeiou]%';

Протестировано MS SQL Server.

Ответ 20

для оракула

select distinct 
    city 
from station 
where regexp_like(city, '^[^aeiouAEIOU].*');

Ответ 21

 SELECT DISTINCT city from STATION
 WHERE city NOT LIKE "[aieuo]%[aieuo] [aieuo]%[aieuo]"
 AND city NOT LIKE "[aieuo]%[aieuo]";

Первый NOT LIKE означает, что каждое слово из двух названий городов не начинается и заканчивается гласными. Второй НЕ НРАВИТСЯ для одноглавых имен городов.

Ответ 22

select distinct city from station where (
    left(city,1) not in ('a','e','i','o','u') 
    and  
    right(city,1) not in ('a','e','i','o','u')
);

Ответ 23

В ORACLE:

select 
distinct(city)
from station
where regexp_like (city, '^[^A|E|I|O|U](*)');

В этом решении нет необходимости указывать конечную букву. Это не вызвало в представленной проблеме.

Ответ 24

select distinct city from station where city regexp '^[^aeiou].*[^aeiou]$'

различать: во избежание дублирования в следующем столбце

regexp: функция MySql (regexp) для получения регулярных выражений. выражение начинается с ^ и заканчивается на $. В Oracle regexp_like (city,'RegEx') регулярного выражения regexp_like (city,'RegEx') с базой данных Oracle.

[^...] означает, что любой символ НЕ содержит какой-либо из ...
[^...]. означает, что один символ НЕ содержит какой-либо из ...
[^...].* означает, что первый символ НЕ содержит никаких ...
[^...].*[^...] означает, что первый символ НЕ содержит какой-либо из ... И не заканчивается с ...
[^aeiou].*[^aeiou] означает, что первый символ NOT начинается с гласных и не заканчивается гласными

Ответ 25

Я работал с этим

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%'

Ответ 26

select distinct <COLUMN NAME> from <table name>
WHERE SUBSTRING(<COLUMN NAME>,1,1) not in ('a','e','i','o','u','A','E','I','O','U')
order by <COLUMN NAME>

Отдельные слова не начинаются с гласной.

Ответ 27

SELECT DISTINCT city FROM station
WHERE CITY NOT REGEXP '^[aeiou]'

MySQL принял ответ.

Ответ 28

SELECT DISTINCT CITY FROM STATION WHERE NOT CITY RLIKE '^[AEIOUaeiou]'

Ответ 29

select distinct city from station where REGEXP_LIKE(LOWER(city),'^[^aeiou].*.[^aeiou]$');

[^ aeiou] Не принимает aeiou.

Ответ 30

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%"
));

Это будет работать, я думаю.