ARRAY_FIND

返回数组中指定元素的序号位置,如果未找到,则返回 -1。数组可以为空白,但不能为 NULL。此函数在测试元素时使用空安全等同性检查。

行为类型

不可变

语法

ARRAY_FIND(array, val_to_find)

参数

array
目标数组。
val_to_find
要搜索的值;类型必须与数组的元素类型匹配或可以强制转换。

示例

=> SELECT array_find(array[1,2,3],2);
array_find
------------
          1
(1 row)

该函数返回指定元素的第一个实例。但是,没有什么可以确保值在数组中是唯一的。

=> SELECT array_find(ARRAY[1,2,7,5,7],7);
 array_find
------------
          2
(1 row)

如果未找到指定的元素,该函数将返回 -1。

=> SELECT array_find(ARRAY[1,3,5,7],4);
array_find
------------
        -1
(1 row)

您可以搜索复杂的元素类型:

=> SELECT ARRAY_FIND(ARRAY[ARRAY[1,2,3],ARRAY[1,null,4]], ARRAY[1,2,3]);
 ARRAY_FIND
------------
          0
(1 row)

=> SELECT ARRAY_FIND(ARRAY[ARRAY[1,2,3],ARRAY[1,null,4]], ARRAY[1,null,4]);
 ARRAY_FIND
------------
          1
(1 row)

第二个示例,比较数组与空元素,找到匹配项,因为 ARRAY_FIND 在评估元素时使用空安全等同性检查。

如前面的示例所示,第一个实参可以是原始类型的字面量多维数组。字面量数组不能包含 ROW 元素,如直接构造语法(字面量)中所述,但表中的数组可以。有关相关示例,请参阅 CONTAINS