Fonction CAST de SQL Server

Résumé : dans ce tutoriel, vous apprendrez à utiliser la fonction CAST() de SQL Server pour convertir une valeur ou une expression d’un type à un autre.

Introduction à la fonction CAST() de SQL Server

Voyons la requête suivante :

SELECT 1 + '1' AS result;
Code language: PHP (php)

Elle renvoie 2 comme nombre :

result-----------2(1 row affected)

Dans cette requête, SQL Server convertit implicitement la chaîne de caractères '1' en nombre 1.

Lorsque vous utilisez deux valeurs avec des types de données différents, SQL Server essaie de convertir le type de données inférieur en type supérieur avant de pouvoir traiter le calcul. C’est ce qu’on appelle une conversion implicite dans SQL Server.

Par opposition aux conversions implicites, nous avons les conversions explicites où vous appelez la fonction CAST() pour convertir explicitement une valeur d’un type à un autre :

SELECT 1 + CAST(1 AS INT) result;
Code language: PHP (php)

La syntaxe de la fonction CAST() est la suivante :

CAST ( expression AS target_type )
Code language: CSS (css)

Dans cette syntaxe :

  • expression peut être une valeur littérale ou une expression valide de tout type qui sera convertie.
  • target_type est le type de données cible vers lequel vous voulez convertir l’expression. Il comprend INTBITSQL_VARIANT, etc. Notez qu’il ne peut pas s’agir d’un type de données alias.
  • length est un nombre entier facultatif qui spécifie la longueur du type cible. La valeur par défaut de length est 30.

La fonction CAST() renvoie l’expression convertie en type de données cible.

Exemples de la fonction CAST() du serveur SQL

Prenons quelques exemples d’utilisation de la fonction CAST().

A) Exemple d’utilisation de la fonction CAST() pour convertir un nombre décimal en un nombre entier

Cet exemple utilise la fonction CAST() pour convertir le nombre décimal 5.95 en un nombre entier:

SELECT CAST(5.95 AS INT) result;
Code language: CSS (css)

Voici la sortie :

result-----------5(1 row affected)

B) Utiliser la fonction CAST() pour convertir un nombre décimal en un autre nombre décimal de longueur différente

L’exemple suivant utilise la fonction CAST() pour convertir le nombre décimal 5.95 en un autre nombre décimal avec l’échelle zéro:

SELECT CAST(5.95 AS DEC(3,0)) result;
Code language: CSS (css)

La sortie est la suivante:

result-------6

Lorsque vous convertissez une valeur des types de données à différents endroits, SQL Server renvoie un résultat tronqué ou une valeur arrondie en fonction des règles suivantes :

.

Depuis le type de données. Type Au Type de données Comportement
numérique numérique Rond
numérique int Truncate
numérique argent Rond argent int Rond
money numérique Rond
float int Truncate
float numeric Round
float datetime Round
datetime int Rond

C) Utilisation de la fonction CAST() pour convertir une chaîne de caractères en une valeur de temps de date exemple

Cet exemple utilise la fonction CAST() pour convertir la chaîne de caractères '2019-03-14' en un temps de date:

SELECT CAST('2019-03-14' AS DATETIME) result;
Code language: PHP (php)

La sortie est :

result-----------------------2019-03-14 00:00:00.000(1 row affected)
Code language: CSS (css)

D) Utilisation de la fonction CAST() avec les opérateurs arithmétiques

Nous allons utiliser les tables sales.orders et sales.order_items de la base de données exemple pour la démonstration :

Tables échantillons

L’instruction suivante utilise la fonction CAST() pour convertir les ventes mensuelles de 2017 en valeurs entières.

SELECT MONTH(order_date) month, CAST(SUM(quantity * list_price * (1 - discount)) AS INT) amountFROM sales.orders o INNER JOIN sales.order_items i ON o.order_id = i.order_idWHERE YEAR(order_date) = 2017GROUP BY MONTH(order_date)ORDER BY month;
Code language: PHP (php)

L’image suivante montre la sortie :

Exemple de fonction CAST de SQL Server

Dans ce tutoriel, vous avez appris à utiliser la fonction CAST() de SQL Server pour convertir une valeur d’un type à un autre.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *