平等や不平等をテストするだけではない場合、ANYとALLが非常に役立つと思います。検討する
'blah' LIKE ANY (ARRAY['%lah', '%fah', '%dah']);
ANY 、ALL そして、それらの否定は、さもなければ重要なサブクエリまたはCTEを必要とするコードを大幅に単純化することができ、私の見解ではそれらは大幅に十分に活用されていません。
ANY どのオペレーターでも動作します。 LIKEと非常に便利です および~ 、ただし、tsquery、配列メンバーシップテスト、hstoreキーテストなどで機能します。
'a => 1, e => 2'::hstore ? ANY (ARRAY['a', 'b', 'c', 'd'])
または:
'a => 1, b => 2'::hstore ? ALL (ARRAY['a', 'b'])
ANYなし またはALL おそらく、VALUESを介してサブクエリまたはCTEとしてそれらを表現する必要があります。 単一の結果を生成するための集計を含むリスト。もちろん、必要に応じてそれを行うこともできますが、私はANYに固執します 。
ここに1つの本当の注意点があります:古いPgバージョンでは、ANY( SELECT ... )を書いている場合 、EXISTS (SELECT 1 FROM ... WHERE ...)を使用すると、パフォーマンスの面でほぼ確実に改善されます。 。オプティマイザーがANY (...)をオンにするバージョンを使用している場合 参加するなら、心配する必要はありません。疑わしい場合は、EXPLAINを確認してください 出力。