SQL Server CAST-Funktion

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:

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

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:

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

Die Syntax der CAST()-Funktion lautet wie folgt:

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

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ören INTBITSQL_VARIANT, usw. Beachten Sie, dass es kein Alias-Datentyp sein kann.
  • length ist eine optionale Ganzzahl, die die Länge des Zieltyps angibt. Der length 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:

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

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:

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

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:

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

Die Ausgabe ist:

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

D) Verwendung der Funktion CAST() mit arithmetischen Operatoren

Zur Demonstration verwenden wir die Tabellen sales.orders und sales.order_items aus der Beispieldatenbank:

Beispieltabellen

Die folgende Anweisung verwendet die Funktion CAST(), um die Monatsumsätze 2017 in ganzzahlige Werte umzuwandeln.

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)

Das folgende Bild zeigt die Ausgabe:

SQL Server CAST Funktionsbeispiel

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.