Перейти к основному содержимому

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 обрабатывается как значение.

  • Пустой массив является подмножеством любого массива.

  • Элементы в двух массивах могут иметь разный порядок.

Примеры

  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, c2 является подмножеством c1 и возвращается 1.

Для строки 2, c2 не является подмножеством c1 и возвращается 0.

Для строки 3, c1 равен NULL и возвращается NULL.

Для строки 4, c2 равен NULL и возвращается NULL.

Для строки 5, два массива содержат null и null обрабатывается как обычное значение, возвращается 1.

Для строки 6, c2 является пустым массивом и считается подмножеством c1. Поэтому возвращается 1.