Aller au contenu
Fonctions SQL

CAST et types de données

CAST convertit une valeur d'un type à un autre, typeof() révèle le type réellement stocké. Dans SQLite, où le typage est souple, ils évitent les tris, comparaisons et divisions faussés.

  • CAST
  • typeof
  • affinité
  • conversion
  • STRICT
  • type

Syntaxe

Modèle
CAST(expression AS INTEGER | REAL | TEXT | NUMERIC | BLOB)typeof(expression)   -- 'integer', 'real', 'text', 'blob' ou 'null'

Exemple

Exemple concret
SELECT name,       price,       typeof(price) AS type_prix,       CAST(price AS INTEGER) AS partie_entiere,       CAST(price AS TEXT) || ' €' AS prix_afficheFROM productsWHERE category = 'Audio'ORDER BY price DESC;-- Jeu de données : boutique-- Résultat attendu :-- Casque audio | 149.99 | real | 149 | 149.99 €-- Enceinte Bluetooth | 79.99 | real | 79 | 79.99 €

À retenir

  1. SQLite applique des affinités de type : une colonne déclarée INTEGER convertit '42' en 42 à l'insertion, mais garde 'abc' tel quel. Le type est porté par la valeur, pas par la colonne, sauf dans une table STRICT.
  2. Piège : CAST(x AS INTEGER) tronque, il n'arrondit pas : CAST(79.99 AS INTEGER) vaut 79. Pour arrondir, utilisez ROUND(x).
  3. Piège : SQLite convertit sans erreur ce qu'il peut : CAST('12abc' AS INTEGER) vaut 12 et CAST('abc' AS INTEGER) vaut 0. PostgreSQL lève une erreur dans les deux cas.
  4. Division : 7 / 2 vaut 3 entre deux entiers. CAST(7 AS REAL) / 2, ou 7 * 1.0 / 2, vaut 3.5.
  5. PostgreSQL accepte aussi la notation courte valeur::integer, SQL Server propose TRY_CAST, qui renvoie NULL au lieu d'une erreur.

Voir aussi