Vous n'êtes pas identifié(e).
Pages : 1
Bonjour @ tous.
Une question me taraude, je souhaite faire un ORDER BY sur une colonne déclarée en varchar et qui contient à la fois des numéros et à la fois des lettres.
Ça donne quelque chose du genre :
Col1
------
A
1
10
2
3
12
AA
B
et je souhaiterais que ça puisse donner :
Col1
------
1
2
3
10
12
A
AA
B
J'imagine qu'avec un CASE on devrait pouvoir en tirer quelque chose, mais j'avoue buter un peu là.
Geo-x
Hors ligne
Bonjour,
Tu peux utiliser une fonction pour ton ORDER BY, qui prend en argument ta valeur, et qui doit la transformer en une valeur qui permet de classer correctement.
create function ordre(str varchar)
RETURNS varchar
LANGUAGE plpgsql
AS $$
BEGIN
RETURN CASE WHEN str < 'A' THEN lpad(str, 255, '0') ELSE str END;
END;
$$;
select ordre(content), content from tab order by ordre(content);
Hors ligne
Pages : 1