sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで配列を比較する方法

    PostgreSQLでは、単純な演算子を使用して値の配列を非常に簡単に比較できます。この記事では、PostgreSQLデータベースの配列を比較する方法を見ていきます。


    PostgreSQLで配列を比較する方法

    PostgreSQLでは、等式演算子(=、<>)、順序付け演算子(>、<、> =、<=)、包含演算子(@>、<@)、および重複演算子(&&)を使用して配列を比較できます。

    PostgreSQLは配列を比較した後、結果としてtrueの場合はt、falseの場合はfを返します。

    これらの演算子を1つずつ見ていきましょう。


    配列を比較して同等にする

    等式演算子は、要素ごとの比較を行って、2つの配列が等しいかどうかを確認します。

    等式演算子を使用して2つの配列を比較するためのサンプルSQLクエリを次に示します。次の2つの配列は等しくありません。

    postgres=# select array[2,3,4] = array[1,2,5] as compare;
     compare
    ---------
     f
    
    postgres=# select array[2,3,4] <> array[1,2,5] as compare;
     compare
    ---------
     t


    配列の順序の比較

    順序付け演算子(>、<、> =、<=)は、2つの配列間で要素ごとの比較を行い、要素の各ペアが必要な順序条件に従っているかどうかを確認します。不一致がない場合はtを返し、そうでない場合はfを返します。

    これが例です

    postgres=# select
               array[1,3,5] >= array[1,3,4] as compare1,
               array[1,3,5] <= array[1,3,4,5] as compare2;
     compare1 | compare2
    ----------+----------
     t        | f

    最初の比較では、最初の配列の各要素は>=2番目の配列の各要素です。したがって、あなたは真実になります。 2番目の比較では、最初の配列には4番目の要素がありません。これは、2番目の配列の4番目の要素との比較に必要です。したがって、比較は失敗し、結果としてfalseになります。


    封じ込めのためにアレイを比較する

    包含演算子(<@、@>)を使用すると、@>演算子を使用して、ある配列に別の配列が含まれているかどうか、または<@演算子を使用して1つの配列が別の配列に含まれているかどうかを確認できます。

    #to check if elements of array['b', 'c', 'd'] contain elements of array['b', 'c']
    postgres=# select array['b', 'c', 'd'] @> array['b', 'c'] as contains;
     contains
    ----------
     t
    
    # to check if array[1, 2, 4] is contained by array[4, 5, 2, 1]
    postgres=#select array[1, 2, 4] <@ array[4, 5, 2, 1] as is_contained_by;
     is_contained_by
    -----------------
     t


    重複する配列の比較

    オーバーラップ演算子(&&)を使用すると、2つの配列に共通の要素があるかどうかを確認できます。

    postgres=# select
    postgres-# array[2, 4] && array[4, 3] as overlap1,
    postgres-# array[0, 2] && array[1, 4] as overlap2;
     overlap1 | overlap2
    ----------+----------
     t        | f
    

    PostgreSQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日それを試してみてください!

    1. MySQL/MariaDBデータベースの自動インクリメント値を変更する方法

    2. PHP:1つのmysql_queryステートメントで複数のSQLクエリ

    3. SqlBulkCopyの推奨バッチサイズはどれくらいですか?

    4. 変数を使用した動的クエリでIN句をどのように指定しますか?