メインコンテンツまでスキップ

array_contains_all

array_contains_all

説明

arr1arr2のすべての要素を含んでいるかどうかを確認します。つまり、arr2arr1の部分集合であるかどうかをチェックします。Yesならば1が返されます。Noならば0が返されます。

構文

BOOLEAN array_contains_all(arr1, arr2)

パラメータ

arr:比較する2つの配列。この構文では、arr2arr1の部分集合かどうかをチェックします。

2つの配列の要素のデータ型は同じでなければなりません。StarRocksでサポートされている配列要素のデータ型については、「ARRAY」を参照してください。

返り値

BOOLEAN型の値を返します。

arr2arr1の部分集合であれば1を返します。それ以外の場合は0を返します。

どちらかの配列がNULLの場合は、NULLが返されます。

使用上の注意

  • 配列にはnull要素が含まれる場合、nullは値として処理されます。
  • 空の配列は、任意の配列の部分集合です。
  • 2つの配列の要素の順序は異なっていても構いません。

  1. t1という名前のテーブルを作成し、このテーブルにデータを挿入します。

    CREATE TABLE t1 (
    c0 INT,
    c1 ARRAY<INT>,
    c2 ARRAY<INT>
    ) ENGINE=OLAP
    DUPLICATE KEY(c0)
    DISTRIBUTED BY HASH(c0);

    INSERT INTO t1 VALUES
    (1,[1,2,3],[1,2]),
    (2,[1,2,3],[1,4]),
    (3,NULL,[1]),
    (4,[1,2,null],NULL),
    (5,[1,2,null],[null]),
    (6,[2,3],[]);
  2. このテーブルからデータをクエリします。

    SELECT * FROM t1 ORDER BY c0;
    +------+------------+----------+
    | c0 | c1 | c2 |
    +------+------------+----------+
    | 1 | [1,2,3] | [1,2] |
    | 2 | [1,2,3] | [1,4] |
    | 3 | NULL | [1] |
    | 4 | [1,2,null] | NULL |
    | 5 | [1,2,null] | [null] |
    | 6 | [2,3] | [] |
    +------+------------+----------+
  3. 各行のc2が対応する行のc1の部分集合かどうかをチェックします。

    SELECT c0, c1, c2, array_contains_all(c1, c2) FROM t1 ORDER BY c0;
    +------+------------+----------+----------------------------+
    | c0 | c1 | c2 | array_contains_all(c1, c2) |
    +------+------------+----------+----------------------------+
    | 1 | [1,2,3] | [1,2] | 1 |
    | 2 | [1,2,3] | [1,4] | 0 |
    | 3 | NULL | [1] | NULL |
    | 4 | [1,2,null] | NULL | NULL |
    | 5 | [1,2,null] | [null] | 1 |
    | 6 | [2,3] | [] | 1 |
    +------+------------+----------+----------------------------+

出力結果の説明:

行1では、c2c1の部分集合であり、1が返されます。

行2では、c2c1の部分集合ではなく、0が返されます。

行3では、c1がNULLであり、NULLが返されます。

行4では、c2がNULLであり、NULLが返されます。

行5では、2つの配列にはnullが含まれており、nullは通常の値として処理され、1が返されます。

行6では、c2は空の配列であり、c1の部分集合と見なされます。したがって、1が返されます。