2017-03-19 7 views
0

母音で始まり、終わらない名前を表示する必要があります。私はこのように試しました:SQLでLIKE INステートメントでない

SELECT DISTINCT name FROM people WHERE 
lower(name) NOT LIKE IN ('a','e','i','o','u')%('a','e','i','o','u'); 

私はエラーが発生しました。

+0

http://stackoverflow.com/questions/3014940/is-there-a-combination-of-like-and-in-in-sql – CollinD

答えて

1

あなたは大文字小文字を区別しないマッチングのためのマッチパラメータiregexp_likeを使用することができます。

select distinct name from people 
where not regexp_like(name, '^[aeiou]($|.*[aeiou]$)', 'i'); 

パターンの詳細:

  • ^[aeiou]は - 母音
  • ($|.*[aeiou]$)で始まる - どちらか一つだけの文字があります(最初のステップでマッチした)、または母音で終わります。
1

大きなデータセットの場合は、パフォーマンス上の理由からREGEXPを使用しないでください。

そのような場合はTRANSLATEあなたの友人です。 )は

2)

select txt from tab1 
where translate(lower(txt),'aeiou','aaaaa') not like 'a%a'; 

REGEXP Sが強大である選択された母音と正常LIKE述語を実行する1つの代表的にすべての母音を翻訳が、非自明なデータに使用すべきではありませんそれらが避けられる場合に備えて設定されます。 (私の8M行のテストデータは、REGEXPで2時間以上でTRANSLATEを使用して7秒を経過しています)。

関連する問題