Vous n'êtes pas identifié(e).
Bonjour la communauté,
Comme je l'indique dans le titre, je souhaiterai récupérer la clé d'un array (ou position) à partir de sa valeur qui est unique.
Voici un exemple :
Mon Array est {NULL,true,NULL}
Je souhaite récupérer la positon de true, soit 2
Le problème est que ce tableau n'a pas de taille connue (n élément), sinon je me serai débrouiller avec un CASE/WHEN.
Merci d'avance pour vos réponses,
Hors ligne
Il y a la solution du bout de PL (que j'utiliserais, ça a l'avantage d'être lisible).
En SQL pur:
select * from (SELECT *,row_number() over () from unnest('{NULL,true,NULL}'::boolean[])) as tmp where unnest=true limit 1;
unnest | row_number
--------+------------
t | 2
Marc.
Hors ligne
Merci Marc.
Pour infos, j'ai eu ceci également :
WITH T1 AS
(
SELECT (ARRAY[NULL, true, NULL])[k] as Val1, k
FROM generate_series(1,array_upper(ARRAY[NULL, true, NULL],1)) k
)
SELECT k FROM T1 where val1 = true
Je vais tester les deux, et comparer les performances.
Hors ligne