dokumentationen anbefaler
ved hjælp af generate_subscripts fungere. Funktionen nedenfor emulerer PHP's array_search :
CREATE FUNCTION array_search(needle ANYELEMENT, haystack ANYARRAY)RETURNER INT AS $$ SELECT i FROM gener_subscripts($2, 1) AS i WHERE $2[i] =$1 BESTILLE EFTER i$$ LANGUAGE sql STABLE; kode>
Dette returnerer indekset for det første match, hvis det findes. Hvis du vil have alle matches, skal du blot ændre RETURNS INT til RETURNERER SETOF INT . Denne funktion returnerer som den er NULL hvis der ikke findes noget match.
Denne funktion virker kun med endimensionelle arrays.
Husk også, at array_search(NULL, a) returnerer altid NULL , selvom arrayet indeholder null-elementer:
> SELECT array_search(null, array[1, 2, null, 4]); array_search --------------(1 række)
Dette er fordi SQL betragter NULL =NULL at være ukendt (dvs. NULL ). Se funktionssammenligning
. Hvis du vil have array_search for at kunne finde NULL elementer, ændre
WHERE $2[i] =$1 til
HVOR $2[i] IKKE FORSKELLER FRA $1