ホームページ > データベース > mysql チュートリアル > PostgreSQL の IN と ANY: 各演算子をいつ使用する必要がありますか?

PostgreSQL の IN と ANY: 各演算子をいつ使用する必要がありますか?

Barbara Streisand
リリース: 2025-01-19 11:37:06
オリジナル
328 人が閲覧しました

IN vs. ANY in PostgreSQL: When Should You Use Each Operator?

PostgreSQL の IN 演算子と ANY 演算子の比較

概要

PostgreSQL は、セットまたはリストに対して値を照合するために、IN と ANY という 2 つの類似した構造を提供します。これらの論理機能は同じですが、構文と使用法には大きな違いがあります。

構文と一致

IN:

  • のカンマ区切りリストを受け入れます。
  • は、これらの値の セット に適用される = ANY と同等です。

いずれか:

  • は、setarray の両方を受け入れることができます。
  • 等価演算子 (=) に加えて、より広範囲の演算子が受け入れられます。

マッチングを設定します

IN と ANY は、セットに対して値を照合する場合と同等です。例:

<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3);
SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>
ログイン後にコピー

配列のマッチング

ただし、配列 マッチングをサポートする ANY の追加の構文バリアントがあります。これにより、値を実際の配列データ型と比較できるようになります:

<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>
ログイン後にコピー

クエリの最適化

場合によっては、IN と ANY の選択がクエリの最適化に影響します。大規模なコレクションの場合、IN 構造体を使用してコレクションを渡すと、パフォーマンスが向上する可能性があります。

ANY のその他の機能

  • 汎用性: LIKE や > などの複数の演算子をサポートします。
  • 不一致一致: NOT 演算子を使用して、配列から値を除外できます (たとえば、id ALL (ARRAY[1, 2]))。
  • NULL 処理: デフォルトでは、NULL 値は ANY または IN 式と一致しません。 NULL 値を含めるには、IS NOT TRUE または IS DISTINCT FROM を使用します。

これらの違いを示すために、次の例を考えてみましょう:

<code class="language-sql">SELECT * FROM table WHERE id IN ('1', '2', NULL, 3);
SELECT * FROM table WHERE id = ANY('{1, 2, NULL, 3}');</code>
ログイン後にコピー

IN 式では NULL 値を含む行が除外されますが、ANY 式では NULL 値が含まれます。さらに、ANY 式では、id > ANY('{1, 2, 3}') などの配列固有の演算子を使用できます。

以上がPostgreSQL の IN と ANY: 各演算子をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート