Dans SQL Server, le CAST()
convertit une expression d'un type de données en un autre.
Voici un aperçu rapide de la fonction avec des exemples.
Syntaxe
La syntaxe ressemble à ceci :
CAST ( expression AS data_type [ ( length ) ] )
Où expression
est l'expression à convertir, data_type
est le nouveau type de données, et length
est une longueur facultative pour le nouveau type de données.
Exemple
Voici un exemple de conversion d'une chaîne en décimal :
SELECT CAST('007' AS DECIMAL(5,2));
Résultat :
7.00
Chaîne à ce jour
Voici un exemple de conversion d'une chaîne en une date :
SELECT CAST('09 Feb 2030' AS date);
Résultat :
2030-02-09
Dans ce cas, le CAST()
fonction a été en mesure de déterminer quelles parties de date sont lesquelles parce que j'ai fourni la date dans un format qu'il reconnaît.
La transmission d'une valeur qui ne peut pas être convertie en date entraîne une erreur :
SELECT CAST('Next Xmas' AS date);
Résultat :
Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string.
Paramètres régionaux
La langue de la session en cours peut faire une différence dans la façon dont les dates sont interprétées.
Voici ce qui se passe lorsque vous utilisez la langue britannique :
SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);
Résultat :
2030-02-09
Dans ce cas, la date a été interprétée comme étant le 9 février.
Changeons la langue en us_English
:
SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);
Résultat :
2030-09-02
Cette fois, il a interprété la date comme étant le deuxième jour de septembre.
Concaténation de chaînes
Voici un exemple de conversion d'une valeur numérique en chaîne afin de concaténer la valeur avec une chaîne :
SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));
Résultat :
Likes: 178
Voici ce qui se passe si nous ne le diffusons pas :
SELECT 'Likes: ' + 178;
Résultat :
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Likes: ' to data type int.
Lorsque vous tentez de concaténer deux valeurs avec des types de données différents, SQL Server doit convertir implicitement l'une des valeurs pour utiliser le type de données de l'autre, afin qu'elles soient toutes deux du même type de données avant de pouvoir effectuer la concaténation. Il suit les règles de priorité des types de données pour effectuer cette conversion.
Dans SQL Server, le INT
le type de données a une priorité plus élevée que VARCHAR
.
Par conséquent, dans l'exemple ci-dessus, SQL Server tente de convertir la chaîne en entier. Mais cela échoue car la chaîne ne peut pas être convertie en entier.
Tronquer le texte
Une petite astuce pratique que nous pouvons effectuer avec le CAST()
fonction est de tronquer les chaînes plus longues à une longueur plus lisible.
Voici un exemple de texte tronqué sélectionné dans une table de base de données :
SELECT
ProductName,
CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;
Résultat :
+---------------------------------+----------------------+ | ProductName | Truncated | |---------------------------------+----------------------| | Left handed screwdriver | Left handed screwdri | | Long Weight (blue) | Long Weight (blue) | | Long Weight (green) | Long Weight (green) | | Sledge Hammer | Sledge Hammer | | Chainsaw | Chainsaw | | Straw Dog Box | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu | | Right handed screwdriver | Right handed screwdr | +---------------------------------+----------------------+
Plus d'informations
Le CAST()
la fonction fonctionne de la même manière que la fonction CONVERT()
fonction, et de nombreuses conversions de données peuvent être effectuées en utilisant l'une ou l'autre. Cela dit, il y a des différences entre eux.
Voir la documentation de Microsoft pour CAST()
et CONVERT()
pour plus d'informations sur l'utilisation de cette fonction.