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
CAST(expression AS INTEGER | REAL | TEXT | NUMERIC | BLOB)typeof(expression) -- 'integer', 'real', 'text', 'blob' ou 'null'Exemple
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
- 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.
- Piège : CAST(x AS INTEGER) tronque, il n'arrondit pas : CAST(79.99 AS INTEGER) vaut 79. Pour arrondir, utilisez ROUND(x).
- 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.
- Division : 7 / 2 vaut 3 entre deux entiers. CAST(7 AS REAL) / 2, ou 7 * 1.0 / 2, vaut 3.5.
- PostgreSQL accepte aussi la notation courte valeur::integer, SQL Server propose TRY_CAST, qui renvoie NULL au lieu d'une erreur.
Voir aussi
- Fonctions texteLes fonctions texte nettoient, découpent et assemblent les chaînes : mettre en majuscules, retirer des espaces, extraire un domaine d'e-mail. Indispensables avant de comparer ou de dédoublonner.
- Fonctions date & heureSQLite stocke les dates en texte ISO et fournit date(), strftime() et julianday() pour les calculer, les formater et les découper. Base des indicateurs par mois, des délais et des échéances.
- SUM, AVG, MIN, MAXCes fonctions résument une colonne numérique en une seule valeur : total, moyenne, plus petite et plus grande valeur, sur toute la table ou par groupe. Base de tout indicateur chiffré.
- CREATE TABLECREATE TABLE déclare une nouvelle table : ses colonnes, leurs types et les contraintes qui protègent les données. C'est la traduction concrète d'un modèle MLD en schéma de base.