In SQL Server das CONVERT()
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:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
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.
Der optionale style
Argument kann verwendet werden, um anzugeben, wie die Funktion den expression
übersetzen soll Streit. Sie könnten dieses Argument beispielsweise verwenden, um das Datumsformat anzugeben.
Beispiel
Hier ist ein Beispiel für die Umwandlung einer Zeichenfolge in eine Dezimalzahl:
SELECT CONVERT(DECIMAL(5,2), '007');
Ergebnis:
7.00
String bis heute
Hier ist ein Beispiel für die Umwandlung einer Zeichenfolge in ein Datum:
SELECT CONVERT(date, '09 Feb 2030');
Ergebnis:
2030-02-09
In diesem Fall das CONVERT()
-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 CONVERT(date, 'My Birthday');
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 CONVERT(date, '09/02/2030');
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 CONVERT(date, '09/02/2030');
Ergebnis:
2030-09-02
Diesmal interpretierte es das Datum als den zweiten Septembertag.
Der style
Argument
Wir können den optionalen style
verwenden Argument, um anzugeben, wie der Ausdruck übersetzt werden soll.
Beispiel:
SET LANGUAGE British;
SELECT
CONVERT(date, '09/02/2030') AS "British",
CONVERT(date, '09/02/2030', 101) AS "US",
CONVERT(date, '09/02/30', 1) AS "US (short)",
CONVERT(date, '20300902', 112) AS "ISO",
CONVERT(date, '09.02.2030', 104) AS "German";
Ergebnis:
+------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
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 'Age: ' + CONVERT(varchar(10), 27);
Ergebnis:
Age: 27
Folgendes passiert, wenn wir es nicht zuerst konvertieren:
SELECT 'Age: ' + 27;
Ergebnis:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Age: ' 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 den gleichen 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
Der Datentyp hat eine höhere Priorität als varchar
.
Daher versucht SQL Server im obigen Beispiel, die Zeichenfolge in eine Ganzzahl zu konvertieren, was jedoch fehlschlägt, da die Zeichenfolge nicht in eine Ganzzahl konvertiert werden kann.
Abschneiden von Text
Ein praktischer kleiner Trick, den wir mit CONVERT()
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,
CONVERT(varchar(20), ProductName) 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
Das CONVERT()
funktioniert ähnlich wie CAST()
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 weitere Informationen zur Verwendung dieser Funktion.