2017-07-06 92 views
1

我寫了這段代碼(db2),它工作得很好,但我想知道,有沒有更簡單的方法來寫這個?SQL查詢城市名稱開始和結尾元音

Select Distinct city 
From station 
Where city Like 'A%a' 
     Or city Like 'A%e' 
     Or city Like 'A%i' 
     Or city Like 'A%o' 
     Or city Like 'A%u' 
     Or city Like 'E%a' 
     Or city Like 'E%e' 
     Or city Like 'E%i' 
     Or city Like 'E%o' 
     Or city Like 'E%u' 
     Or city Like 'I%a' 
     Or city Like 'I%e' 
     Or city Like 'I%i' 
     Or city Like 'I%o' 
     Or city Like 'I%u' 
     Or city Like 'O%a' 
     Or city Like 'O%e' 
     Or city Like 'O%i' 
     Or city Like 'O%o' 
     Or city Like 'O%u' 
     Or city Like 'U%a' 
     Or city Like 'U%e' 
     Or city Like 'U%i' 
     Or city Like 'U%o' 
     Or city Like 'U%u'; 
+1

'如果城市像「[AEIOU]%[AEIOU] '' – Siyual

+0

Siyual,我想他需要這個 - LIKE'[AEIOU]%[aeiou]' –

回答

3

我不是一個DB2專家,但這個應該是相當便攜:

WHERE LEFT(city,1) IN ('A', 'E', 'I', 'O', 'U') 
    AND RIGHT(city,1) IN ('a', 'e', 'i', 'o', 'u') 

您可能希望這一切歸爲大寫,以避免由於某種原因開始與城市問題小寫字母或以大寫字母結尾。

WHERE UPPER(LEFT(city,1)) IN ('A', 'E', 'I', 'O', 'U') 
    AND LOWER(RIGHT(city,1)) IN ('a', 'e', 'i', 'o', 'u') 
0

作爲一個初學者,這是我如何解決它:

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

您可以使用substr這樣的:

SELECT DISTINCT CITY 
FROM STATION WHERE SUBSTR(CITY,1,1) IN('A','E','I','O','U','a','e','i','o','u') 
and SUBSTR(CITY,-1,1) IN('A','E','I','O','U','a','e','i','o','u');