array_contains_all
arr1
が arr2
のすべての要素を含んでいるかどうか、つまり arr2
が arr1
の部分集合であるかどうかを確認します。もしそうであれば、1 が返されます。そうでなければ、0 が返されます。
構文
BOOLEAN array_contains_all(arr1, arr2)
パラメータ
arr
: 比較する2つの配列。この構文は arr2
が arr1
の部分集合であるかどうかを確認します。
2つの配列内の要素のデータ型は同じでなければなりません。StarRocks がサポートする配列要素のデータ型については、ARRAY を参照してください。
戻り値
BOOLEAN 型の値を返します。
arr2
が arr1
の部分集合である場合、1 が返されます。それ以外の場合、0 が返されます。
2つの配列のいずれかが NULL の場合、NULL が返されます。
使用上の注意
-
配列に
null
要素が含まれている場合、null
は値として処理されます。 -
空の配列は任意の配列の部分集合です。
-
2つの配列内の要素は異なる順序を持つことができます。
例
-
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],[]); -
このテーブルからデータをクエリします。
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] | [] |
+------+------------+----------+ -
各行の
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では、c2
は c1
の部分集合であり、1 が返されます。
行2では、c2
は c1
の部分集合ではなく、0 が返されます。
行3では、c1
は NULL であり、NULL が返されます。
行4では、c2
は NULL であり、NULL が返されます。
行5では、2つの配列に null
が含まれており、null
は通常の値として処理され、1 が返されます。
行6では、c2
は空の配列であり、c1
の部分集合と見なされます。したがって、1 が返されます。