Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 26/05/2015 10:05:47
- Geo-x
- Membre
ORDER BY sur un champ mixte
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
#2 30/05/2015 10:29:10
- elol
- Membre
Re : ORDER BY sur un champ mixte
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