すべての都市名がすべて小文字であるとすると、次のようになります。
select city
from station
where substr(city, 1, 1) in ('a', 'e', 'i', 'o', 'u')
and substr(city, -1, 1) in ('a', 'e', 'i', 'o', 'u')
substr(city、1、1)
city
の部分文字列を取ります 位置1から始まり、長さ1(つまり、最初の文字だけ)。 substr(city、-1、1)
は非常に似ていますが、位置が異なるだけです: -1
終わりからの最初の文字を意味します 文字列の-これにより、都市名の最後の文字が表示されます。
city
の場合 WHERE
には、大文字と小文字の両方が含まれる場合があります 句はlower(city)
を使用します city
の代わりに 。
編集 :人気のリクエストにより、正規表現で同じことができる方法は次のとおりです。ただし、ここで正規表現アプローチを使用しても意味がありません。標準の文字列関数(SUBSTRなど)は、正規表現に基づくものよりもはるかに高速であることがほぼ確実です。
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a | e | i | o | u)
それらの文字の1つだけを意味します。 ^コード> 文字列の先頭にアンカーを意味し、同様に
$
文字列の最後に。厳密に言えば、これには都市名が少なくとも2文字の長さである必要があります。 1文字の都市名が可能な場合、これは簡単に変更できます。 (SUBSTRアプローチは変更を必要としません。)
最後の引数、'i'
、正規表現の一致する大文字と小文字を区別しません(必要な場合に備えて)。