#1 Fri 08 December 2017 09:19
- monique
- Participant actif
- Date d'inscription: 7 Oct 2005
- Messages: 146
QGIS 2.18.1: Trier les colonnes de la table d'attribut
Bonjour,
Pour trier les enregistrements avec l'option de tri du menu contextuel de l'en-tête de colonne sur plusieurs champs, j'utilise l'expression : concat (col0, col1)
Je voulais faire un tri sur un premier champ en caractère et un second en numérique, résultat le champ numérique est classé en ordre alphabétique et non numérique. Qu'elle autre expression conviendrait pour ce type de tri ?
Merci pour votre aide, Monique
Hors ligne
#2 Tue 12 December 2017 09:01
- mfangain
- Participant actif
- Date d'inscription: 12 Jun 2012
- Messages: 88
Re: QGIS 2.18.1: Trier les colonnes de la table d'attribut
Bonjour,
Vous pouvez peut-être essayer de forcer la conversion en numérique de votre seconde colonne :
Ce qui donnerait quelquechose du style :
Code:
concat(col0, toreal(col1))
Ou remplacer toreal par toint si les valeurs sont de type entier.
Ou alors
Code:
col0|| toreal(col1)
MFANGAIN
Hors ligne
#3 Fri 15 December 2017 16:02
- monique
- Participant actif
- Date d'inscription: 7 Oct 2005
- Messages: 146
Re: QGIS 2.18.1: Trier les colonnes de la table d'attribut
Bonjour,
Si je trie uniquement sur le champ en numérique (ici pop_mun_14) le tri est correct
Si je trie avec un autre champ (qu'il soit caractère ou numérique) le numérique est considéré comme du caractère, même avec to_int (voir fichier joint)
est-ce qu'il y aurait une autre astuce ?
Merci
Monique
Hors ligne
#5 Fri 15 December 2017 16:58
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS 2.18.1: Trier les colonnes de la table d'attribut
Bonjour,
Le concat balance le résultat en texte donc ignore le toreal. L'astuce sera de remplir le champ numérique par des 0 pour assurer une comparaison caractère à caractère (genre '006' vs '025' plutôt que '6' vs '25'). Cela se fait avec
Code:
concat(col0, lpad(col1, nbremaxdechiffres, 0))
Hors ligne