2016-04-14 5 views
6

Ich versuche, die Liste der CITY-Namen aus Tabelle - STATION abzufragen, die nicht mit Vokalen mit Ergebnissen beginnen, die keine Duplikate enthalten können. Die Tabelle hat nur id, Stadt, BevölkerungSQL-Abfrage, um eine Liste von Städtenamen zu finden, die nicht mit Vokalen beginnen

Dies ist die Abfrage, die ich

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

Daraus ergibt sich eine falsche Antwort geschrieben habe. Was mache ich hier falsch?

+0

versuchen die 'NICHT RLIKE '^ [aeiouAEIOU] * $'' –

Antwort

6

versuchen Sie dies.

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

A ^ in regulären Ausdrücken können unterschiedliche Bedeutung haben, je nach ihrer Lage. Wenn es das erste Zeichen in einer Regex ist, bezieht es sich auf den Anfang der Zeichenfolge. Aber wenn es das erste Zeichen in einem Satz ist, wie [^abc], bedeutet dies . Und wenn es anderswo erscheint, bezieht es sich nur auf die ^ selbst.

So müssten Sie so etwas wie:

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

oder ausschließen, nur die Buchstaben, die Sie nicht wollen:

SELECT DISTINCT CITY FROM STATION 
WHERE CITY RLIKE '^[^aeiouAEIOU].*'; 
2
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%'; 
0
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%" 
)); 

Das werde ich arbeiten vermuten.

+0

bitte begründen, warum es funktioniert. – piyushj

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

Das funktionierte auf MS SQL SERVER:

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

es funktionierte auf MS SQL SERVER –

0

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

Sie verschiedene Stadt wählen von der Station verwenden können, wo Stadt nicht RLIKE ‚^ [aeiouAEIOU ]. * '

0

verschiedene C auswählen ITY von STATION wo links (CITY, 1) nicht in ('a', 'e', ​​'i', 'o', 'u') oder rechts (CITY, 1) nicht in ('a', 'e' , 'ich', 'o', 'du');

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

Wenn die Abfrage nicht beginnt und endet mit einem Vokal.

0

wählen DISTINCT CITY aus STATION wo CITY NOT LIKE '[a, e, i, o, u]%'

0

versuchen dieses

DISTINCT CITY VON STATION SELECT WHERE LOWER (SUBSTR (STADT, LÄNGE (STADT), 1)) IN ('a', 'e', ​​'i', 'o', 'u');

0

SELECT DISTINCT CITY VON STATION WHERE STADT NICHT RLIKE '[aeiouAEIOU] $'

Das für MYSQL arbeitet

+0

Sie haben das Muster am Ende der Zeichenfolge verankert, nicht am Anfang. Das bringt dir Städte, die NICHT in einem Vokal enden, das Gegenteil von dem, was gefragt wurde. Versuchen Sie –

+0

Versuchen Sie SELECT 'Aberdeen' nicht RLIKE '[aeiouAEIOU] $' und sehen Sie, was Sie bekommen. –

0

Abfrage der Liste der Städtenamen aus STATION, die entweder nicht mit Vokalen beginnen oder enden Sie nicht mit Vokalen. IN ORACLE

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