Ответ 1
попробуйте это.
SELECT DISTINCT CITY
FROM STATION
WHERE CITY NOT RLIKE '^[aeiouAEIOU].*$'
Я пытаюсь запросить список имен CITY из таблицы STATION, которые не начинаются с гласных с результатами, которые не могут содержать дубликаты. В таблице только id, city, population
Это запрос, который я написал
SELECT DISTINCT CITY FROM STATION
WHERE CITY RLIKE '[^bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ].*';
Это дает неправильный ответ. Что я здесь делаю неправильно?
попробуйте это.
SELECT DISTINCT CITY
FROM STATION
WHERE CITY NOT RLIKE '^[aeiouAEIOU].*$'
A ^
в регулярных выражениях могут иметь разные значения, в зависимости от их местоположения. Когда он является первым символом в регулярном выражении, он ссылается на начало строки. Но когда это первый символ в наборе, например [^abc]
, это означает not one of
. И когда он появляется в другом месте, он просто ссылается на ^
.
Итак, вам понадобится что-то вроде:
SELECT DISTINCT CITY FROM STATION
WHERE CITY RLIKE '^[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ].*';
или просто исключите буквы, которые вы не хотите:
SELECT DISTINCT CITY FROM STATION
WHERE CITY RLIKE '^[^aeiouAEIOU].*';
Запросить список имен 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]$';
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%';
Попробуйте следующее:
SELECT DISTINCT CITY FROM STATION
WHERE CITY REGEXP '^[^aeiou].*';
MySQL Ref.: https://dev.mysql.com/doc/refman/5.5/en/regexp.html
SELECT DISTINCT CITY from STATION WHERE CITY RLIKE '^[^aeiouAEIOU].*$'
select distinct city from station where city regexp
'^[^aeiou].*[^aeiou]$'
Если ваш запрос не начинается и заканчивается гласным.
Простой пример без регулярных выражений
SELECT DISTINCT
City
FROM Station
WHERE LEFT(City, 1) NOT IN ("a", "e", "i", "o", "u");
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]%';
Я попробовал это.
select distinct city
from station
where substring(city,1,1) not in('A','E','I','O','U');
попробуй это:
SELECT DISTINCT CITY
FROM STATION
WHERE CITY NOT REGEXP '[aeiouAEIOU]$'
SELECT DISTINCT CITY FROM STATION
WHERE CITY RLIKE '^.*[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$';
Это работало на MS SQL SERVER:
select distinct city from station where city NOT like '[aeuio]%' Order by City;
В 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%';
Ты можешь использовать:
select distinct city from station where city not RLIKE '^[aeiouAEIOU]'
выберите отличный CITY из STATION, где left (CITY, 1) не в ('a', 'e', 'i', 'o', 'u') или right (CITY, 1) не в ", 'е', 'я', 'о', 'и');
select DISTINCT CITY from STATION where CITY NOT LIKE '[a,e,i,o,u]%'
Попробуй это:
SELECT DISTINCT CITY FROM STATION WHERE
LOWER(SUBSTR(CITY,LENGTH(CITY),1)) IN ('a','e','i','o','u');
Select Distinct City from Station where City Like '[^aeiou]%';
Протестировано MS SQL Server.
для оракула
select distinct
city
from station
where regexp_like(city, '^[^aeiouAEIOU].*');
SELECT DISTINCT city from STATION
WHERE city NOT LIKE "[aieuo]%[aieuo] [aieuo]%[aieuo]"
AND city NOT LIKE "[aieuo]%[aieuo]";
Первый NOT LIKE означает, что каждое слово из двух названий городов не начинается и заканчивается гласными. Второй НЕ НРАВИТСЯ для одноглавых имен городов.
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')
);
В ORACLE:
select
distinct(city)
from station
where regexp_like (city, '^[^A|E|I|O|U](*)');
В этом решении нет необходимости указывать конечную букву. Это не вызвало в представленной проблеме.
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 начинается с гласных и не заканчивается гласными
Я работал с этим
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%'
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>
Отдельные слова не начинаются с гласной.
SELECT DISTINCT city FROM station
WHERE CITY NOT REGEXP '^[aeiou]'
MySQL принял ответ.
SELECT DISTINCT CITY FROM STATION WHERE NOT CITY RLIKE '^[AEIOUaeiou]'
select distinct city from station where REGEXP_LIKE(LOWER(city),'^[^aeiou].*.[^aeiou]$');
[^ aeiou] Не принимает 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%"
));
Это будет работать, я думаю.