In SQL Server der CAST()
Funktion konvertiert einen Ausdruck eines Datentyps in einen anderen.
Hier ist ein kurzer Überblick über die Funktion mit Beispielen.
Syntax
Die Syntax lautet wie folgt:
CAST ( expression AS data_type [ ( length ) ] )
Wobei expression
ist der zu konvertierende Ausdruck data_type
ist der neue Datentyp und length
ist eine optionale Länge für den neuen Datentyp.
Beispiel
Hier ist ein Beispiel für das Casting einer Zeichenfolge als Dezimalzahl:
SELECT CAST('007' AS DECIMAL(5,2));
Ergebnis:
7.00
String bis heute
Hier ist ein Beispiel für die Umwandlung einer Zeichenfolge in ein Datum:
SELECT CAST('09 Feb 2030' AS date);
Ergebnis:
2030-02-09
In diesem Fall der CAST()
-Funktion konnte feststellen, welche Datumsteile welche sind, weil ich das Datum in einem Format bereitgestellt habe, das sie erkennt.
Das Übergeben eines Werts, der nicht als Datum umgewandelt werden kann, führt zu einem Fehler:
SELECT CAST('Next Xmas' AS date);
Ergebnis:
Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string.
Gebietsschema
Die Sprache der aktuellen Sitzung kann einen Unterschied bei der Interpretation von Datumsangaben machen.
Folgendes passiert bei Verwendung der britischen Sprache:
SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);
Ergebnis:
2030-02-09
In diesem Fall wurde das Datum als der 9. Februar interpretiert.
Ändern wir die Sprache zu us_English
:
SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);
Ergebnis:
2030-09-02
Diesmal interpretierte es das Datum als den zweiten Septembertag.
String-Verkettung
Hier ist ein Beispiel für das Umwandeln eines numerischen Werts in einen String, um den Wert mit einem String zu verketten:
SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));
Ergebnis:
Likes: 178
Folgendes passiert, wenn wir es nicht übertragen:
SELECT 'Likes: ' + 178;
Ergebnis:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Likes: ' to data type int.
Beim Versuch, zwei Werte mit unterschiedlichen Datentypen zu verketten, muss SQL Server einen der Werte implizit konvertieren, um den Datentyp des anderen zu verwenden, sodass beide denselben Datentyp haben, bevor die Verkettung durchgeführt werden kann. Es folgt den Regeln der Datentyppriorität, um diese Konvertierung durchzuführen.
In SQL Server ist der INT
Datentyp hat eine höhere Priorität als VARCHAR
.
Daher versucht SQL Server im obigen Beispiel, die Zeichenfolge in eine ganze Zahl zu konvertieren. Dies schlägt jedoch fehl, da der String nicht in eine Ganzzahl umgewandelt werden kann.
Abschneiden von Text
Ein praktischer kleiner Trick, den wir mit CAST()
ausführen können Funktion besteht darin, längere Zeichenfolgen auf eine besser lesbare Länge zu kürzen.
Hier ist ein Beispiel für das Abschneiden von Text, der aus einer Datenbanktabelle ausgewählt wurde:
SELECT
ProductName,
CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;
Ergebnis:
+---------------------------------+----------------------+ | 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 | +---------------------------------+----------------------+
Weitere Informationen
Der CAST()
funktioniert ähnlich wie CONVERT()
Funktion, und viele Datenkonvertierungen können mit beiden durchgeführt werden. Allerdings gibt es Unterschiede zwischen ihnen.
Siehe die Microsoft-Dokumentation für CAST()
und CONVERT()
für detailliertere Informationen zur Verwendung dieser Funktion.