Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die SQL Server CAST()
-Funktion verwenden, um einen Wert oder einen Ausdruck von einem Typ in einen anderen zu konvertieren.
Einführung in die SQL Server-Funktion CAST()
Schauen wir uns die folgende Abfrage an:
Code language: PHP (php)SELECT 1 + '1' AS result;
Sie gibt 2 als Zahl zurück:
result-----------2(1 row affected)
In dieser Anweisung wandelt SQL Server implizit die Zeichenkette '1'
in die Zahl 1
um.
Wenn Sie zwei Werte mit unterschiedlichen Datentypen verwenden, versucht SQL Server, den niedrigeren Datentyp in den höheren zu konvertieren, bevor er die Berechnung verarbeiten kann. Dies wird in SQL Server als implizite Konvertierung bezeichnet.
Im Gegensatz zu impliziten Konvertierungen gibt es explizite Konvertierungen, bei denen Sie die CAST()
-Funktion aufrufen, um einen Wert eines Typs explizit in einen anderen zu konvertieren:
Code language: PHP (php)SELECT 1 + CAST(1 AS INT) result;
Die Syntax der CAST()
-Funktion lautet wie folgt:
Code language: CSS (css)CAST ( expression AS target_type )
In dieser Syntax:
-
expression
kann ein literaler Wert oder ein gültiger Ausdruck beliebigen Typs sein, der konvertiert wird. -
target_type
ist der Zieldatentyp, in den der Ausdruck konvertiert werden soll. Dazu gehörenINT
BIT
SQL_VARIANT
, usw. Beachten Sie, dass es kein Alias-Datentyp sein kann. -
length
ist eine optionale Ganzzahl, die die Länge des Zieltyps angibt. Derlength
ist standardmäßig auf 30 eingestellt.
Die Funktion CAST()
gibt den in den Zieldatentyp konvertierten Ausdruck zurück.
Beispiele für die Funktion CAST() des SQL-Servers
Lassen Sie uns einige Beispiele für die Verwendung der Funktion CAST()
ansehen.
A) Beispiel für die Verwendung der Funktion CAST() zur Umwandlung einer Dezimalzahl in eine Ganzzahl
In diesem Beispiel wird die Funktion CAST()
verwendet, um die Dezimalzahl 5.95
in eine Ganzzahl umzuwandeln:
Code language: CSS (css)SELECT CAST(5.95 AS INT) result;
Hier ist die Ausgabe:
result-----------5(1 row affected)
B) Mit der Funktion CAST() eine Dezimalzahl in eine andere Dezimalzahl mit anderer Länge umwandeln
Das folgende Beispiel verwendet die Funktion CAST()
zur Umwandlung der Dezimalzahl 5.95 in eine andere Dezimalzahl mit der Skala Null umzuwandeln:
Code language: CSS (css)SELECT CAST(5.95 AS DEC(3,0)) result;
Die Ausgabe sieht wie folgt aus:
result-------6
Wenn Sie einen Wert der Datentypen an verschiedenen Stellen konvertieren, gibt SQL Server ein abgeschnittenes Ergebnis oder einen gerundeten Wert basierend auf den folgenden Regeln zurück:
Von Datentyp Typ | Bis Datentyp | Verhalten |
---|---|---|
numerisch | Rund | |
numerisch | int | Trunkieren |
numerisch | Geld | Rund |
Geld | int | Rund |
Geld | numerisch | Rund |
Fließkomma | Int | Abschneiden |
Fließkomma | Numerisch | Rund |
Fließkomma | Datumszahl | Rund |
Datumszahl | int | Round |
C) Beispiel für die Konvertierung einer Zeichenkette in einen Datumswert mit der Funktion CAST()
In diesem Beispiel wird die Funktion CAST()
verwendet, um die Zeichenkette '2019-03-14'
in einen Datumswert zu konvertieren:
Code language: PHP (php)SELECT CAST('2019-03-14' AS DATETIME) result;
Die Ausgabe ist:
Code language: CSS (css)result-----------------------2019-03-14 00:00:00.000(1 row affected)
D) Verwendung der Funktion CAST() mit arithmetischen Operatoren
Zur Demonstration verwenden wir die Tabellen sales.orders
und sales.order_items
aus der Beispieldatenbank:
Die folgende Anweisung verwendet die Funktion CAST()
, um die Monatsumsätze 2017 in ganzzahlige Werte umzuwandeln.
Code language: PHP (php)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;
Das folgende Bild zeigt die Ausgabe:
In diesem Tutorial haben Sie gelernt, wie Sie die SQL Server CAST()
Funktion verwenden, um einen Wert von einem Typ in einen anderen zu konvertieren.