Sqlite : formater la sortie

Anne sqlite

L’affichage brut des résultats d’une requête SELECT étant un peu indigeste, on peut avoir envie de l’améliorer.

On peut déjà utiliser les directives :

.mode column
.width 40 20 10 10 20

Cela permet d’aligner les colonnes, et d’en préciser la largeur.

Et pour afficher le titre des colonnes, on ajoute :

.header on

Si on enchaîne plusieurs requêtes, on peut aussi utiliser .print pour afficher des messages intermédiaires :

.print "\nRésultats :\n"

A partir de la version 3.8.3, la fonction printf a été ajoutée à sqlite, ce qui est bien pratique à utiliser dans la première partie du SELECT:

SELECT printf("%s %s a %d ans", Prenom, Nom, Age)
  FROM gens;

Si on a une version antérieur, on peut quand même utiliser la concaténation (||), et d’autres fonctions de manipulation de chaîne comme substr ou replace. On peut aussi utiliser des expressions comme le CASE ici :

SELECT Prenom, Nom,
       CASE WHEN Age >= 18 THEN "majeur"
            ELSE "mineur:" || Age
       END AS Majorité
  FROM gens;

On note qu’il y a une autre forme d’expression CASE pour tester des égalités :

CASE val WHEN v1 THEN r1 WHEN v2 THEN r2 ELSE r3 END

Par ailleurs, la partie AS n’est pas obligatoire, mais elle permet de nommer la colonne (utilisé dans le titre par exemple).

Pour plus de libertés dans l’affichage, surtout lorsqu’il ne s’agit pas d’afficher des colonnes, on utilise :

.mode list
.separator ""

On peut alors faire par exemple :

SELECT "Proportion de gens majeurs : ",
       SUM (Age >= 18), "/", COUNT(*)
  FROM gens;

Voir aussi :