ドキュメントの推奨事項
generate_subscripts
を使用する 関数。以下の関数は、のPHPのarray_search
をエミュレートします。 :
CREATE FUNCTION array_search(needle ANYELEMENT, haystack ANYARRAY)
RETURNS INT AS $$
SELECT i
FROM generate_subscripts($2, 1) AS i
WHERE $2[i] = $1
ORDER BY i
$$ LANGUAGE sql STABLE;
存在する場合、これは最初の一致のインデックスを返します。すべての一致が必要な場合は、RETURNS INT
を変更するだけです。 RETURNS SETOF INT
へ 。この関数は、そのままNULL
を返します。 一致するものが見つからない場合。
この関数は、1次元配列でのみ機能します。
また、array_search(NULL, a)
常にNULL
を返します 、配列にnull要素が含まれている場合でも:
> SELECT array_search(null, array[1, 2, null, 4]);
array_search
--------------
(1 row)
これは、SQLがNULL = NULL
を考慮するためです。 不明 (つまり、NULL
)。 functions-comparison
を参照してください 。 array_search
が必要な場合 NULL
を見つけることができるようにする 要素、変更
WHERE $2[i] = $1
に
WHERE $2[i] IS NOT DISTINCT FROM $1