Konvertierungsfunktionen
Verwenden Sie die Konvertierungsfunktionen CAST und CONVERT, um Ausdrücke von einem Datentyp in einen anderen zu konvertieren, in Fällen, in denen die Datentypkonvertierung nicht automatisch von SQL Server ausgeführt wird. Die automatische Konvertierung in SQL Server erfolgt beispielsweise beim Vergleich zweier Ausdrücke der Typen char und datetime oder smallint und int, sowie bei char-Ausdrücken verschiedener Länge. Der Vorgang wird als implizite Konvertierung bezeichnet. Die Verwendung von CAST oder CONVERT ist bei diesen impliziten Konvertierungen unnötig. In folgenden Konvertierungsszenarien können Sie CAST und CONVERT verwenden:
Zwei Ausdrücke besitzen genau den gleichen Datentyp.
Zwei Ausdrücke können implizit konvertiert werden.
Eine explizite Konvertierung der Datentypen ist erforderlich.
Wenn Sie versuchen, eine unzulässige Konvertierung durchzuführen (beispielsweise einen char-Ausdruck mit Buchstaben in einen int-Ausdruck), zeigt SQL Server eine Fehlermeldung an.
CAST- und CONVERT-Funktionen können auch verwendet werden, um eine Vielzahl spezieller Datenformate zu erhalten, sowie in der SELECT-Liste, in der WHERE-Klausel und überall dort, wo auch Ausdrücke zulässig sind.
Verwenden Sie CAST anstelle von CONVERT, wenn Ihr Transact-SQL-Programmcode dem SQL-92-Standard entsprechen soll. Verwenden Sie hingegen CONVERT anstelle von CAST, wenn Sie die Vorteile der CONVERT-Funktionalität nutzen möchten.
Bei der Verwendung von CAST als auch CONVERT sind folgende Informationen erforderlich:
Der zu konvertierende Ausdruck (bei einem Umsatzbericht müssen beispielsweise die Umsatzdaten von Währungsdaten in Zeichendaten konvertiert werden).
Der Datentyp, in den der angegebene Ausdruck konvertiert werden soll, wie z. B. varchar oder ein anderer von SQL Server bereitgestellter Systemdatentyp.
Wenn Sie den konvertierten Wert nicht speichern, ist eine Konvertierung nur für die Dauer der CAST- oder CONVERT-Funktion gültig.
Wenn Sie bei der Konvertierung keine Länge für den Datentyp angeben, legt SQL Server automatisch den Wert 30 fest.
Beispiele
In diesem Beispiel wird CAST in der ersten SELECT-Anweisung und CONVERT in der zweiten SELECT-Anweisung verwendet, um durch Konvertieren der Title-Spalte in eine nvarchar(20)-Spalte die Länge der Titel zu verkürzen.
USE AdventureWorks;
GO
SELECT CAST(Title AS nvarchar(20)) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO
Oder
USE AdventureWorks;
GO
SELECT CONVERT(nvarchar(20), Title) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO
Im Folgenden wird das Resultset der beiden Abfragen aufgeführt.
Title Revision
-------------------- --------
Crank Arm and Tire M 0
Front Reflector Brac 1
Installing Replaceme 0
Repair and Service G 0
Training Wheels 2 1
(5 row(s) affected)
Im folgenden Beispiel wird die HireDate-Spalte, eine Spalte vom Typ datetime, in eine char(11)-Spalte konvertiert.
USE AdventureWorks
GO
SELECT c.FirstName, c.LastName, CAST(e.HireDate AS char(11)) AS HireDate
FROM HumanResources.Employee e
JOIN Person.Contact c ON e.EmployeeID = c.ContactID
WHERE c.FirstName = 'Kim'
GO
Dies ist das Resultset.
FirstName LastName HireDate
--------- ----------------------- -----------
Kim Abercrombie Dec 12 1997
Kim Akers Mar 23 1998
(2 row(s) affected)
Siehe auch