- 类别:
:doc:`/sql-reference/functions-semistructured`(数组/对象)
ARRAY_POSITION¶
返回元素在数组中首次出现位置的索引。
语法¶
ARRAY_POSITION( <variant_expr> , <array> )
实参¶
value_expr
要在
array
中查找的值。如果
array
是 半结构化 ARRAY,则value_expr
必须计算为 VARIANT 结果。如果
array
是 结构化 ARRAY,则value_expr
的计算结果必须为与 ARRAY 类型 相当 的类型。
array
要搜索的 ARRAY。
返回¶
该函数返回 INTEGER,指定 value_expr
在 array
中的位置。
使用说明¶
返回值是从 0 开始的,而不是从 1 开始的。换句话说,如果
value_expr
与数组中的第一个元素匹配,则此函数返回 0,而不是 1。如果该值不包含在 ARRAY 中,则函数返回 NULL。
如果为
value_expr
指定 NULL,则函数返回数组中第一个 NULL 的位置。
示例¶
以下示例展示了如何使用此函数:
SELECT ARRAY_POSITION('hello'::variant, array_construct('hello', 'hi')); +------------------------------------------------------------------+ | ARRAY_POSITION('HELLO'::VARIANT, ARRAY_CONSTRUCT('HELLO', 'HI')) | |------------------------------------------------------------------| | 0 | +------------------------------------------------------------------+SELECT ARRAY_POSITION('hi'::variant, array_construct('hello', 'hi')); +---------------------------------------------------------------+ | ARRAY_POSITION('HI'::VARIANT, ARRAY_CONSTRUCT('HELLO', 'HI')) | |---------------------------------------------------------------| | 1 | +---------------------------------------------------------------+SELECT ARRAY_POSITION('hello'::variant, array_construct('hola', 'bonjour')); +----------------------------------------------------------------------+ | ARRAY_POSITION('HELLO'::VARIANT, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) | |----------------------------------------------------------------------| | NULL | +----------------------------------------------------------------------+