array_contains_seq
Проверяет, содержатся ли все элементы array2 в array1 в том же порядке. Функция возвращает 1 тогда и только тогда, когда array1 = prefix + array2 + suffix.
Например:
select array_contains_seq([1,2,3,4], [1,2,3]);возвращает 1.select array_contains_seq([1,2,3,4], [4,3]);возвращает 0.
Эта функция поддерживается начиная с версии v1.5.2.
Синтаксис
BOOLEAN array_contains_seq(arr1, arr2)
Параметры
arr: два массива для сравнения. Этот синтаксис проверяет, является ли arr2 подмножеством arr1 и находятся ли элементы в том же порядке.
Типы данных элементов в двух массивах должны совпадать. Список типов данных элементов массива, поддерживаемых Selena, см. в разделе ARRAY.
Возвращаемое значение
Возвращает значение типа BOOLEAN.
- Возвращается
1, еслиarr2является подмножествомarr1и элементы вarr2соблюдают тот же порядок, что и вarr1. В противном случае возвращается0. - Пустой массив является подмножеством любого массива. Поэтому возвращается
1, еслиarr2пуст, ноarr1является допустимым массивом. - Возвращается NULL, если любой из входных массивов является NULL.
- Значения NULL в массивах обрабатываются как обычные значения. Например,
SELECT array_contains_seq([1, 2, NULL, 3, 4], [2,3])вернет 0. ОднакоSELECT array_contains_seq([1, 2, NULL, 3, 4], [2,NULL,3])вернет 1.
Примеры
MySQL > select array_contains_seq([1,2,3,4], [1,2,3]);
+---------------------------------------------+
| array_contains_seq([1, 2, 3, 4], [1, 2, 3]) |
+---------------------------------------------+
| 1 |
+---------------------------------------------+
MySQL > select array_contains_seq([1,2,3,4], [3,2]);
+------------------------------------------+
| array_contains_seq([1, 2, 3, 4], [3, 2]) |
+------------------------------------------+
| 0 |
+------------------------------------------+
MySQL > select array_contains_seq([1, 2, NULL, 3, 4], ['a']);
+-----------------------------------------------+
| array_contains_all([1, 2, NULL, 3, 4], ['a']) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
MySQL > select array_contains_seq([1,2,3,4,null], null);
+------------------------------------------+
| array_contains([1, 2, 3, 4, NULL], NULL) |
+------------------------------------------+
| NULL |
+------------------------------------------+
MySQL > select array_contains_seq([1,2,3,4], []);
+--------------------------------------+
| array_contains_seq([1, 2, 3, 4], []) |
+--------------------------------------+
| 1 |
+--------------------------------------+