Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

CONVERT() in SQL Server

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.