メインコンテンツまでスキップ
バージョン: Latest-3.4

array_contains_all

arr1arr2 のすべての要素を含んでいるかどうか、つまり arr2arr1 の部分集合であるかどうかを確認します。もしそうであれば、1 が返されます。そうでなければ、0 が返されます。

構文

BOOLEAN array_contains_all(arr1, arr2)

パラメータ

arr: 比較する2つの配列。この構文は arr2arr1 の部分集合であるかどうかを確認します。

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

戻り値

BOOLEAN 型の値を返します。

arr2arr1 の部分集合である場合、1 が返されます。それ以外の場合、0 が返されます。

2つの配列のいずれかが 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 が返されます。