array_contains_all
Проверяет, содержит ли arr1 все элементы arr2, то есть является ли arr2 подмножеством arr1. Если да, возвращается 1. Если нет, возвращается 0.
Синтаксис
BOOLEAN array_contains_all(arr1, arr2)
Параметры
arr: два массива для сравнения. Этот синтаксис проверяет, является ли arr2 подмножеством arr1.
Типы данных элементов в обоих массивах должны быть одинаковыми. Информацию о типах данных элементов массива, поддерживаемых Selena, см. в разделе ARRAY.
Возвращаемое значение
Возвращает значение типа BOOLEAN.
Возвращается 1, если arr2 является подмножеством arr1. В противном случае возвращается 0.
Если какой-либо из двух массивов равен NULL, возвращается NULL.
Примечания по использованию
-
Если массив содержит элементы
null,nullобрабатывается как значение. -
Пустой массив является подмножеством любого массива.
-
Элементы в двух массивах могут иметь разный порядок.
Примеры
-
Создайте таблицу с именем
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, оба массива содержат null, и null обрабатывается как обычное значение, возвращается 1.
Для строки 6, c2 является пустым массивом и считается подмножеством c1. Поэтому возвращается 1.