array_contains_seq
检查 array2 的所有元素是否以完全相同的顺序出现在 array1 中。因此,当且仅当 array1 = prefix + array2 + suffix
时,该函数将返回 1。
例如
select array_contains_seq([1,2,3,4], [1,2,3]);
返回 1。select array_contains_seq([1,2,3,4], [4,3]);
返回 0。
该函数从 v3.3 版本开始支持。
语法
BOOLEAN array_contains_seq(arr1, arr2)
参数
arr
:要比较的两个数组。此语法检查 arr2
是否是 arr1
的子集,并且顺序完全相同。
两个数组中元素的数据类型必须相同。有关 StarRocks 支持的数组元素数据类型,请参阅ARRAY。
返回值
返回 BOOLEAN 类型的值。
- 如果
arr2
是arr1
的子集,并且arr2
中的元素与arr1
中的元素顺序相同,则返回1
。 否则,返回0
。 - 空数组是任何数组的子集。因此,如果
arr2
为空但arr1
是有效数组,则返回1
。 - 如果任何输入数组为 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 |
+--------------------------------------+