我写了这段代码(db2),它工作得很好,但我想知道,有没有更短的方法来写这个?
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';
Run Code Online (Sandbox Code Playgroud)
我不是 DB2 专家,但这应该是相当可移植的:
WHERE LEFT(city,1) IN ('A', 'E', 'I', 'O', 'U')
AND RIGHT(city,1) IN ('a', 'e', 'i', 'o', 'u')
Run Code Online (Sandbox Code Playgroud)
您可能希望将其全部标准化为大写,以避免由于某种原因以小写字母开头或以大写字母结尾的城市出现问题。
WHERE UPPER(LEFT(city,1)) IN ('A', 'E', 'I', 'O', 'U')
AND LOWER(RIGHT(city,1)) IN ('a', 'e', 'i', 'o', 'u')
Run Code Online (Sandbox Code Playgroud)
我不是 DB2 专家,但我认为您可以在 WHERE LIKE 中使用正则表达式。
Example:
Select Distinct city
From station
Where REGEXP_LIKE(city,'[aeiou].*[aeiou]')
Run Code Online (Sandbox Code Playgroud)