doporučuje dokumentace
pomocí generate_subscripts
funkce. Funkce níže emuluje array_search
PHP :
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;
Vrátí index první shody, pokud existuje. Pokud chcete všechny shody, jednoduše změňte RETURNS INT
na RETURNS SETOF INT
. Tato funkce, jak je, vrací NULL
pokud není nalezena žádná shoda.
Tato funkce funguje pouze s jednorozměrnými poli.
Také mějte na paměti, že array_search(NULL, a)
vždy vrátí NULL
, i když pole obsahuje prvky null:
> SELECT array_search(null, array[1, 2, null, 4]);
array_search
--------------
(1 row)
Je to proto, že SQL považuje NULL = NULL
být neznámý (tj. NULL
). Viz srovnání funkcí
. Pokud chcete array_search
abyste mohli najít NULL
prvky, změnit
WHERE $2[i] = $1
do
WHERE $2[i] IS NOT DISTINCT FROM $1