2017-07-06 55 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'); 
相关问题