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。