SQL 查询城市名称以元音开头和结尾

cri*_*ers 5 sql

我写了这段代码(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)

fho*_*fel 5

我不是 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)


Max*_*lin 0

我不是 DB2 专家,但我认为您可以在 WHERE LIKE 中使用正则表达式。

检查文档: https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0061494.html

Example:
Select Distinct city
From   station
Where  REGEXP_LIKE(city,'[aeiou].*[aeiou]')
Run Code Online (Sandbox Code Playgroud)