2016-04-14 101 views
6

我試圖從表 - STATION查詢不以含有重複結果的元音開頭的CITY名稱列表。 表只是有ID,城市,人口SQL查詢查找不以元音開頭的城市名稱列表

這是我寫

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

這給出了一個錯誤的答案查詢。我在這裏做錯了什麼?

+0

嘗試'NOT RLIKE '^ [aeiouAEIOU] * $'' –

回答

6

試試這個。

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

一個^正則表達式中可以有不同的含義,這取決於它的位置。當它是正則表達式中的第一個字符時,它指向字符串的開頭。但是當它是一組中的第一個字符時,如[^abc],這意味着not one of。當它出現在別處時,它只是指^本身。

所以,你會需要這樣的東西:

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

,或者只是排除信你不想:

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

這將工作我猜測。

+0

請提供理由,爲什麼它會起作用。 – piyushj

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

這個工作在MS SQL SERVER:

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

它在MS SQL SERVER上工作 –

0

在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

可以使用 選擇站不同的城市,城市不是RLIKE「^ [aeiouAEIOU ] *'

0

select distinct C ITY從STATION離開(CITY,1)不在('a','e','i','o','u')或右邊(CITY,1)不在('a','e' , 'I', '0', 'U');

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

如果你的查詢沒有開始,並以元音結束。

0

選擇從站,在那裏CITY NOT LIKE DISTINCT CITY '[A,E,I,O,U]%'

0

嘗試這一個

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

0

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

這從STATION,要麼不與元音開始適用於MYSQL

+0

您已將模式錨定到字符串的末尾,而不是開始。這讓你的城市不會以元音結尾,與所要求的相反。嘗試 –

+0

嘗試選擇'阿伯丁'不RLIKE'[aeiouAEIOU] $',看看你得到什麼。 –

0

查詢城市名的列表或者不以元音結束。在Oracle

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