Lorsque vous travaillez avec des données en SQL, il peut être nécessaire de convertir des valeurs entre différents types de données. La fonction SQL CAST est un outil pratique pour effectuer ces conversions de type de données facilement et clairement. Cet article fournit une explication détaillée de l’utilisation de la fonction CAST, y compris l’utilisation de base, des exemples de conversion spécifiques, des exemples avancés et des méthodes de gestion des erreurs. Améliorez vos connaissances en conversion de type de données SQL et visez à créer des requêtes plus avancées.
Syntaxe de Base de la Fonction CAST
La fonction CAST est une fonction SQL standard pour convertir des types de données. La syntaxe de base est la suivante :
CAST(expression AS target_data_type)
Ici, expression
est la valeur ou la colonne à convertir, et target_data_type
est le type de données cible. Par exemple, pour convertir une chaîne de caractères en entier, vous pouvez utiliser la requête suivante :
SELECT CAST('123' AS INT);
Cette requête convertit la chaîne de caractères '123'
en entier et renvoie la valeur numérique 123
.
Exemples de Conversion de Type de Données
Voici quelques exemples typiques de conversions de types de données en utilisant la fonction CAST.
Conversion de Chaîne en Entier
Exemple de conversion de données de type chaîne en type entier.
SELECT CAST('456' AS INT) AS ConvertedValue;
Cette requête convertit la chaîne de caractères '456'
en entier 456
.
Conversion d’Entier en Chaîne
Exemple de conversion de données de type entier en type chaîne.
SELECT CAST(789 AS VARCHAR(10)) AS ConvertedValue;
Cette requête convertit l’entier 789
en chaîne de caractères '789'
.
Conversion de Chaîne en Date
Exemple de conversion de données de type chaîne en type date.
SELECT CAST('2024-05-24' AS DATE) AS ConvertedValue;
Cette requête convertit la chaîne de caractères '2024-05-24'
en date 2024-05-24
.
Conversion de Nombre à Virgule Flottante en Entier
Exemple de conversion de données de type nombre à virgule flottante en type entier.
SELECT CAST(123.456 AS INT) AS ConvertedValue;
Cette requête convertit le nombre à virgule flottante 123.456
en entier 123
.
Différences Entre les Fonctions CAST et CONVERT
SQL dispose également de la fonction CONVERT, qui est similaire à la fonction CAST, mais il existe quelques différences entre les deux.
Différences de Base
La fonction CAST est conforme à la norme ANSI SQL et est supportée par la plupart des bases de données. En revanche, la fonction CONVERT est une extension principalement utilisée dans Microsoft SQL Server et offre des options de formatage spécifiques.
Différences de Syntaxe
Syntaxe de la fonction CAST :
CAST(expression AS target_data_type)
Syntaxe de la fonction CONVERT :
CONVERT(target_data_type, expression [, style])
La fonction CONVERT possède une option style
qui permet de convertir des dates ou des chaînes de caractères dans des formats spécifiques.
Exemples d’Utilisation
Exemple de la fonction CAST :
SELECT CAST('123' AS INT) AS ConvertedValue;
Exemple de la fonction CONVERT :
SELECT CONVERT(INT, '123') AS ConvertedValue;
Exemple de la fonction CONVERT utilisant l’option de format :
SELECT CONVERT(VARCHAR, GETDATE(), 101) AS USFormattedDate;
Cette requête convertit la date actuelle en une chaîne de caractères au format MM/JJ/AAAA
.
Exemples Avancés Utilisant la Fonction CAST
La fonction CAST peut être utilisée dans divers scénarios avancés au-delà de la conversion de type de données de base. Voici quelques exemples pratiques.
Concaténation de Nombres en Chaînes
Exemple de conversion d’un nombre en chaîne de caractères et de concaténation avec une autre chaîne.
SELECT 'Numéro de commande : ' + CAST(OrderID AS VARCHAR) AS OrderDescription
FROM Orders;
Cette requête convertit le OrderID
en chaîne de caractères et le concatène avec la chaîne Numéro de commande :
.
Imposer la Cohérence des Types de Données
Exemple d’assurance de la cohérence des types de données lors de l’utilisation de colonnes de différents types de données ensemble.
SELECT CAST(SalesAmount AS DECIMAL(10, 2)) AS FormattedSalesAmount
FROM Sales;
Cette requête convertit la colonne SalesAmount
en type DECIMAL avec 2 décimales.
Comparaison de Dates et de Chaînes
Exemple de conversion d’une date en type chaîne pour comparaison.
SELECT *
FROM Events
WHERE CAST(EventDate AS VARCHAR) = '2024-05-24';
Cette requête convertit la colonne EventDate
en chaîne de caractères et recherche les lignes correspondant à la chaîne de date spécifiée.
Conversion Conditionnelle de Type de Données
Exemple d’utilisation de l’instruction CASE pour effectuer une conversion conditionnelle de type de données.
SELECT
CASE
WHEN IsNumeric(Value) = 1 THEN CAST(Value AS INT)
ELSE NULL
END AS ConvertedValue
FROM SampleTable;
Cette requête convertit la colonne Value
en entier uniquement si la valeur est numérique.
Gestion des Erreurs Utilisant la Fonction CAST
Des erreurs peuvent survenir lors de la conversion de type de données. Voici quelques méthodes de gestion des erreurs à considérer lors de l’utilisation de la fonction CAST.
Utilisation de la Fonction TRY_CAST
Dans SQL Server, vous pouvez utiliser la fonction TRY_CAST pour éviter les erreurs de conversion. TRY_CAST renvoie NULL si la conversion échoue.
SELECT TRY_CAST('abc' AS INT) AS SafeConversion;
Cette requête renvoie NULL
car la conversion de la chaîne de caractères 'abc'
en entier échoue.
Gestion des Erreurs avec les Instructions CASE
Exemple de combinaison de l’instruction CASE avec la gestion des erreurs basée sur des conditions.
SELECT
CASE
WHEN ISNUMERIC(Value) = 1 THEN CAST(Value AS INT)
ELSE NULL
END AS SafeConversion
FROM SampleTable;
Cette requête renvoie NULL si la Value
n’est pas numérique.
Utilisation de la Fonction TRY_PARSE
TRY_PARSE est utile pour convertir des chaînes de caractères en dates ou en nombres. TRY_PARSE renvoie également NULL si la conversion échoue.
SELECT TRY_PARSE('2024-05-24' AS DATE USING 'en-US') AS SafeDateConversion;
Cette requête convertit la chaîne de caractères '2024-05-24'
en type date et renvoie NULL
si la conversion échoue.
Requête Exemple pour la Gestion des Erreurs
Voici un exemple de gestion des erreurs en utilisant TRY_CAST.
SELECT
Name,
TRY_CAST(Age AS INT) AS SafeAge
FROM Users;
Cette requête évite les erreurs en renvoyant NULL si les valeurs de la colonne Age
ne peuvent pas être converties en entiers.
Conclusion
La fonction CAST est un outil puissant et flexible pour la conversion de type de données en SQL. Comprendre sa syntaxe de base et essayer divers exemples de conversion de type de données vous aidera à développer des compétences pour créer des requêtes plus complexes. De plus, connaître les différences et l’utilisation d’autres fonctions de conversion telles que CONVERT et TRY_CAST est important. Une gestion correcte des erreurs garantit la création de requêtes SQL fiables. Maîtrisez l’utilisation de la fonction CAST pour effectuer des opérations sur les bases de données plus efficacement.