跳到主要内容
版本: 最新版本-3.5

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 类型的值。

  • 如果 arr2arr1 的子集,并且 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 |
+--------------------------------------+