Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

CAST und CONVERT (Transact-SQL)

Aktualisiert: 17. Juli 2006

Konvertiert einen Ausdruck explizit von einem Datentyp in einen anderen. Die Funktionalität von CAST und CONVERT ist ähnlich.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen


Syntax for CAST:
CAST ( expression AS data_type [ (length ) ])

Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

expression

Ein beliebiger gültiger Ausdruck.

data_type

Der vom Zielsystem bereitgestellte Datentyp. Hierzu zählen xml, bigint und sql_variant. Aliasdatentypen können nicht verwendet werden. Weitere Informationen zu verfügbaren Datentypen finden Sie unter Datentypen (Transact-SQL).

length

Ein optionaler Parameter der Datentypen nchar, nvarchar, char, varchar, binary oder varbinary. Wenn für CONVERT der length-Parameter nicht angegeben ist, wird der Standardwert 30 verwendet.

style

Der Aufbau des Datumsformats, das zum Konvertieren von datetime- oder smalldatetime-Daten in Zeichendaten (Datentypen nchar, nvarchar, char, varchar, nchar oder nvarchar) oder zum Konvertieren von Zeichendaten bekannter Datums- oder Zeitformate in datetime- oder smalldatetime-Daten verwendet wird, bzw. des Zeichenfolgenformats, das zum Konvertieren von float-, real-, money- oder smallmoney-Daten in Zeichendaten (Datentypen nchar, nvarchar, char, varchar, nchar oder nvarchar) verwendet wird. Wenn der Wert für style NULL ist, ist das zurückgegebene Ergebnis ebenfalls NULL.

ms187928.note(de-de,SQL.90).gifHinweis:
Die in diesem Thema aufgeführten Formate werden von SQL Server in den beschriebenen Kombinationen mit den CONVERT-Zieldatentypen unterstützt. Andere Formate und Kombinationen werden nicht unterstützt. Verwenden Sie keine nicht unterstützten Formate. Das Verwenden von nicht unterstützten Formaten oder Kombinationen aus Format und Zieldatentyp löst möglicherweise einen Fehler aus oder führt zu unzuverlässigen Ergebnisses. Diese Ergebnisse werden zwischen den einzelnen Versionen von SQL Server nicht garantiert.

SQL Server unterstützt das arabische Datumsformat mithilfe des kuwaitischen Algorithmus.

In der folgenden Tabelle werden in den zwei linken Spalten die Werte für style für die Konvertierung von datetime- oder smalldatetime-Daten in Zeichendaten dargestellt. Addieren Sie 100 zu dem jeweiligen Wert für style, um eine vierstellige Jahresangabe (d. h. mit Jahrhundert) zu erhalten (yyyy).

Ohne Jahrhundert (yy) (1) Mit Jahrhundert (yyyy) Standard Eingabe/Ausgabe (3)

-

0 oder 100 (1, 2)

Standard

mon dd yyyy hh:miAM (oder PM)

1

101

USA

mm/tt/jjjj

2

102

ANSI

yy.mm.dd

3

103

Britisch/Französisch

dd/mm/yy

4

104

Deutsch

dd.mm.yy

5

105

Italienisch

dd-mm-yy

6

106 (1)

-

dd mon yy

7

107 (1)

-

Mon dd, yy

8

108

-

hh:mi:ss

-

9 oder 109 (1, 2)

Standardwert + Millisekunden

mon dd yyyy hh:mi:ss:mmmAM (oder PM)

10

110

USA

mm-dd-yy

11

111

JAPAN

yy/mm/dd

12

112

ISO

yymmdd

-

13 oder 113 (1, 2)

Europ. Standard + Millisekunden

dd mon yyyy hh:mi:ss:mmm(24h)

14

114

-

hh:mi:ss:mmm(24h)

-

20 oder 120 (2)

ODBC kanonisch

yyyy-mm-dd hh:mi:ss(24h)

-

21 oder 121 (2)

ODBC kanonisch (mit Millisekunden)

yyyy-mm-dd hh:mi:ss.mmm(24h)

-

126 (4)

ISO8601

yyyy-mm-ddThh:mi:ss.mmm (keine Leerzeichen)

127(6, 7)

ISO8601 mit Zeitzone (Z).

yyyy-mm-ddThh:mi:ss.mmmZ

(keine Leerzeichen)

-

130 (1, 2)

Hijri (5)

dd mon yyyy hh:mi:ss:mmmAM

-

131 (2)

Hijri (5)

dd/mm/yy hh:mi:ss:mmmAM

1 Diese Formatwerte geben nicht deterministische Ergebnisse zurück. Dazu gehören alle (yy)-Formate (ohne Jahrhundert) und eine Teilmenge der (yyyy)-Formate (mit Jahrhundert).

2 Die Standardwerte (style 0 oder 100, 9 oder 109, 13 oder 113, 20 oder 120 und 21 oder 121) geben immer das Jahrhundert zurück (yyyy).

3 Eingabe, wenn in datetime konvertiert wird; Ausgabe, wenn in Zeichendaten konvertiert wird.

4 Vorgesehen für XML-Verwendung. Für eine Konvertierung aus datetime- oder smalldatetime-Daten in Zeichendaten ist das Ausgabeformat so wie in der Tabelle beschrieben.

5 Hijri ist ein Kalendersystem mit verschiedenen Varianten. In SQL Server 2005 wird der Kuwaiti-Algorithmus verwendet.

ms187928.note(de-de,SQL.90).gifWichtig:
Standardmäßig verwendet SQL Server bei der Interpretation von zweistelligen Jahresangaben 2049 als Umstellungsjahr: 49 wird als 2049 und 50 als 1950 interpretiert. Viele Clientanwendungen, z. B. auf OLE-Automatisierungsobjekten basierende Anwendungen, ziehen die Grenze bei 2030. SQL Server stellt die Konfigurationsoption two digit year cutoff bereit, mit der die von SQL Server verwendete Einstellung geändert werden kann, um eine einheitliche Behandlung der Datumsangaben zu erzielen. Die Verwendung von vierstelligen Jahresangaben wird empfohlen.

6 Wird nur bei der Umwandlung mit CAST von Zeichendaten in datetime- oder smalldatetime-Werte unterstützt. Wenn Zeichendaten, die nur Zeit- oder nur Datumskomponenten darstellen, in die Datentypen datetime oder smalldatetime umgewandelt werden, wird die nicht angegebene Zeitkomponente auf 00:00:00.000 festgelegt und die nicht angegebene Datumskomponente auf 1900-01-01.

7 Der optionale Zeitzonenindikator Z vereinfacht die Zuordnung von XML-datetime-Werten mit Zeitzoneninformationen zu SQL Server-datetime-Werten ohne Zeitzone. Z ist der Indikator für die Zeitzone UTC-0. Andere Zeitzonen werden durch einen positiven (+) oder negativen (-) Offset (HH:MM) angegeben. Beispiel: 2006-12-12T23:45:12-08:00.

Bei der Konvertierung von smalldatetime-Daten in Zeichendaten werden bei Formaten mit Sekunden oder Millisekunden an diesen Stellen Nullen ausgegeben. Sie können unerwünschte Teile in Datumsangaben abschneiden, indem Sie bei der Konvertierung von Werten der Datentypen datetime oder smalldatetime in einen char- oder varchar-Datentyp eine entsprechende Länge angeben.

In der folgenden Tabelle werden die Werte für style aufgeführt, die für die Konvertierung von float- oder real-Daten in Zeichendaten verwendet werden können.

Wert Ausgabe

0 (Standardwert)

Maximal 6 Ziffern. Wird gegebenenfalls in der wissenschaftlichen Schreibweise verwendet

1

Immer 8 Ziffern. Wird immer in der wissenschaftlichen Schreibweise verwendet

2

Immer 16 Ziffern. Wird immer in der wissenschaftlichen Schreibweise verwendet

ms187928.note(de-de,SQL.90).gifHinweis:
Ist für die Konvertierung von float- und real-Werten das Format (style) 126 angegeben, entspricht die Ausgabe dem style-Wert 2 bzw. 1.

In der folgenden Tabelle werden die Werte für style aufgeführt, die für die Konvertierung von money- oder smallmoney-Daten in Zeichendaten verwendet werden können.

Wert Ausgabe

0 (Standardwert)

Links vom Dezimaltrennzeichen werden keine Tausendertrennzeichen eingefügt, rechts vom Dezimaltrennzeichen stehen zwei Ziffern; z. B. 4235.98.

1

Links vom Dezimaltrennzeichen werden Tausendertrennzeichen eingefügt, rechts vom Dezimaltrennzeichen stehen zwei Ziffern; z. B. 3,510.92.

2

Links vom Dezimaltrennzeichen werden keine Tausendertrennzeichen eingefügt, rechts vom Dezimaltrennzeichen stehen vier Ziffern; z. B. 4235.9819.

ms187928.note(de-de,SQL.90).gifHinweis:
Ist für die Konvertierung von money- oder smallmoney-Werten in Zeichendaten das Format (style) 126 angegeben, entspricht die Ausgabe dem style-Wert 2.

In der folgenden Tabelle werden die Werte für style aufgeführt, die für die Konvertierung von Zeichenfolgeneingaben in xml-Daten verwendet werden können.

Wert Ausgabe

0 (Standardwert)

Verwenden Sie das Standardanalyseverhalten, bei dem bedeutungslose Leerzeichen verworfen werden und interne DTD-Teilmengen nicht zulässig sind.

Beim Konvertieren in den xml-Datentyp werden bedeutungslose Leerzeichen aus SQL Server 2005 anders behandelt als in XML 1.0. Weitere Informationen finden Sie unter Generieren von XML-Instanzen.
ms187928.note(de-de,SQL.90).gifHinweis:

1

Bedeutungslose Leerzeichen erhalten. Mit dieser Formateinstellung wird festgelegt, dass die Standardbehandlung xml:space sich so verhält, als wäre stattdessen xml:space="preserve" angegeben worden.

2

Begrenzte interne DTD-Teilmengenverarbeitung aktivieren.

Bei aktivierter interner Teilmengenverarbeitung kann der Server die folgenden Informationen, die in einer internen DTD-Teilmenge bereitgestellt werden, zur Ausführung von Analysevorgängen ohne Überprüfungscharakter verwenden.

  • Für Attribute werden die Standardwerte angewendet.
  • Interne Entitätsverweise werden aufgelöst und erweitert.
  • Das DTD-Inhaltsmodell wird auf seine syntaktische Richtigkeit geprüft.

Der Parser ignoriert externe DTD-Teilmengen. Er nimmt auch keine Auswertung der XML-Deklaration vor, um festzustellen, ob das standalone-Attribut auf yes oder no festgelegt ist. Stattdessen wird die XML-Instanz wie ein eigenständiges Dokument analysiert.

3

Bedeutungslose Leerzeichen erhalten und die begrenzte interne DTD-Teilmengenverarbeitung aktivieren.

Gibt denselben Wert zurück wie data_type.

Implizite Konvertierungen sind Konvertierungen, die ohne Angabe der CAST- oder CONVERT-Funktion durchgeführt werden. Explizite Konvertierungen sind Konvertierungen, die die Angabe der CAST- oder CONVERT-Funktion erfordern. In der folgenden Abbildung werden alle expliziten und impliziten Datentypkonvertierungen aufgeführt, die für die vom SQL Server 2005-System bereitgestellten Datentypen zulässig sind. Zu diesen gehören xml, bigint und sql_variant. Es gibt keine implizite Konvertierung bei der Zuweisung vom sql_variant-Datentyp, eine implizite Konvertierung zum sql_variant-Datentyp findet jedoch statt.

Datentyp-Konvertierungstabelle
ms187928.note(de-de,SQL.90).gifHinweis:
Da Unicode-Daten immer eine gerade Anzahl von Bytes verwenden, muss das Konvertieren von binary- oder varbinary-Datentypen in oder von Unicode-Datentypen vorsichtig erfolgen. Die folgende Konvertierung gibt z. B. nicht den Hexadezimalwert 41, sondern 4100 zurück: SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary).

Datentypen mit umfangreichen Werten

Datentypen mit umfangreichen Werten weisen das gleiche implizite und explizite Konvertierungsverhalten auf wie ihre kleineren Gegenstücke, insbesondere die Datentypen varchar, nvarchar und varbinary. Sie sollten jedoch die folgenden Richtlinien beachten:

  • Die Konvertierung von image in varbinary(max) und umgekehrt ist eine implizite Konvertierung. Das Gleiche gilt für Konvertierungen zwischen text und varchar(max) sowie zwischen ntext und nvarchar(max).
  • Die Konvertierung von Datentypen mit hohen Werten, z. B. varchar(max), in einen entsprechenden kleineren Datentyp, z. B. varchar, ist zwar eine implizite Konvertierung, doch kommt es zu einer Abschneidung, wenn der umfangreiche Wert sich als zu groß für die angegebene Länge des kleineren Datentyps erweist.
  • Die Konvertierung von varchar, nvarchar oder varbinary in den jeweils entsprechenden Datentyp mit umfangreichen Werten wird implizit ausgeführt.
  • Die Konvertierung vom sql_variant-Datentyp in einen Datentyp mit umfangreichen Werten ist eine explizite Konvertierung.
  • Datentypen mit umfangreichen Werten können nicht in den sql_variant-Datentyp konvertiert werden.

Informationen zum Konvertieren der benutzerdefinierten CLR-Typen (Common Language Runtime) von Microsoft .NET Framework finden Sie unter Ausführen von Operationen an benutzerdefinierten Typen. Weitere Informationen zum Konvertieren des xml-Datentyps finden Sie unter Generieren von XML-Instanzen.

XML-Datentyp

Wenn Sie den xml-Datentyp explizit oder implizit in einen Zeichenfolgen- oder Binärdatentyp umwandeln, wird der Inhalt des xml-Datentyps nach einer Reihe von Regeln serialisiert. Informationen zu diesen Regeln finden Sie unter Serialisierung von XML-Daten. Informationen dazu, wie Sie XML- in CLR-benutzerdefinierte Datentypen umwandeln, finden Sie unter Ausführen von Operationen an benutzerdefinierten Typen. Informationen zum Konvertieren von anderen Datentypen in xml-Datentypen finden Sie unter Generieren von XML-Instanzen.

Datentypen text und image

Die automatische Datentypkonvertierung wird für die Datentypen text und image nicht unterstützt. Die explizite Konvertierung von text-Daten in Zeichendaten und von image- in binary- oder varbinary-Daten ist zwar möglich, doch nur bis zu einer maximalen Länge von 8000 Bytes. Falls Sie versuchen, eine unzulässige Konvertierung vorzunehmen, wie z. B. die Konvertierung eines Zeichenausdrucks mit Buchstaben in int-Daten, gibt SQL Server eine Fehlermeldung zurück.

Ausgabesortierung

Wenn sowohl die Ausgabe von CAST oder CONVERT als auch die Eingabe eine Zeichenfolge ist, hat die Ausgabe dieselbe Sortierung und Sortierungsbezeichnung wie die Eingabe. Wenn die Eingabe keine Zeichenfolge ist, hat die Ausgabe die Standardsortierung der Datenbank und die Sortierungsbezeichnung coercible-default (Standard erzwingbar). Weitere Informationen finden Sie unter Rangfolge von Sortierungen (Transact-SQL).

Wenn Sie der Ausgabe eine andere Sortierung zuweisen möchten, wenden Sie die COLLATE-Klausel auf den Ergebnisausdruck der CAST- oder CONVERT-Funktion an. Beispiel:

SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

Abschneiden und Runden von Ergebnissen

Werden Zeichenausdrücke oder binäre Ausdrücke (char, nchar, nvarchar, varchar, binary oder varbinary) in einen Ausdruck eines anderen Datentyps konvertiert, können die Daten abgeschnitten oder nur teilweise angezeigt werden, bzw. es wird ein Fehler zurückgegeben, da das Ergebnis zum Anzeigen zu kurz ist. Konvertierungen in char, varchar, nchar, nvarchar, binary und varbinary werden abgeschnitten, mit Ausnahme der in der folgenden Tabelle aufgelisteten Konvertierungen.

Ausgangsdatentyp Zieldatentyp Ergebnis

int, smallint oder tinyint

char

*

 

varchar

*

 

nchar

E

 

nvarchar

E

money, smallmoney, numeric, decimal, float oder real

char

E

 

varchar

E

 

nchar

E

 

nvarchar

E

* = Die Ergebnislänge ist zu kurz, um angezeigt zu werden. E = Es wird ein Fehler zurückgegeben, da die Ergebnislänge zu kurz ist, um angezeigt zu werden.

In SQL Server wird sichergestellt, dass nur reversible Konvertierungen (d. h. Konvertierungen, bei denen konvertierte Datentypen in den ursprünglichen Datentyp zurückkonvertiert werden können) von Version zu Version die gleichen Ergebnisse erzielen. Im folgenden Beispiel wird eine solche Hin- und Rückkonvertierung veranschaulicht:

DECLARE @myval decimal (5, 2)
SET @myval = 193.57
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5))
-- Or, using CONVERT
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval))
ms187928.note(de-de,SQL.90).gifHinweis:
Versuchen Sie nicht, binary-Werte zu erstellen und diese dann in einen Datentyp der numerischen Datentypkategorie zu konvertieren. SQL Server kann nicht sicherstellen, dass das Ergebnis einer Konvertierung von einem decimal- oder numeric-Datentyp in binary zwischen verschiedenen Versionen von SQL Server gleich ausfallen wird.

Im folgenden Beispiel ist der resultierende Ausdruck zu klein, um angezeigt zu werden.

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, SUBSTRING(c.Title, 1, 25) AS Title, CAST(e.SickLeaveHours AS char(1)) AS 'Sick Leave'
FROM HumanResources.Employee e JOIN Person.Contact c ON e.EmployeeID = c. ContactID
WHERE NOT EmployeeID >5

Dies ist das Resultset.

FirstName      LastName         Title                  Sick Leave
---------      ---------      -------------------   -----------
Gustavo        Achong         Mr.                   *
Catherine      Abel           Ms.                   *
Kim            Abercrombie    Ms.                   *
Humberto       Acevedo        Sr.                   *
Pilar          Ackerman       Sra.                  *

(5 row(s) affected)

Beim Konvertieren von Datentypen mit unterschiedlichen Dezimalstellen wird der Ergebniswert manchmal abgeschnitten und manchmal gerundet. In der folgenden Tabelle wird das Verhaltensmuster veranschaulicht.

Von In Verhalten

numeric

numeric

Runden

numeric

int

Abschneiden

numeric

money

Runden

money

int

Runden

money

numeric

Runden

float

int

Abschneiden

float

numeric

Runden

float

datetime

Runden

datetime

int

Runden

Das Ergebnis der Konvertierung im folgenden Beispiel ist beispielsweise 10:

SELECT CAST(10.6496 AS int)

Falls eine Konvertierung von Datentypen vorgenommen wird, bei der der Zieldatentyp weniger Dezimalstellen hat als der Quelldatentyp, wird der Wert abgeschnitten. Das Ergebnis der Konvertierung im folgenden Beispiel ist $10.3497:

SELECT CAST(10.3496847 AS money)

SQL Server gibt eine Fehlermeldung zurück, wenn nicht numerische char-, nchar-, varchar- oder nvarchar-Daten in int-, float-, numeric- oder decimal-Daten konvertiert werden. SQL Server gibt außerdem einen Fehler zurück, wenn eine leere Zeichenfolge (" ") in numeric- oder decimal-Daten konvertiert werden soll.

Konvertieren von binären Zeichenfolgendaten

Werden binary- oder varbinary-Daten in Zeichendaten konvertiert und ist eine ungerade Anzahl von Werten nach dem x vorhanden, wird von SQL Server eine 0 (Null) nach dem x hinzugefügt, damit eine gerade Anzahl von Werten erreicht wird.

Binärdaten setzen sich aus den Zeichen 0 bis 9 und A bis F (oder a bis f) zusammen und bestehen aus Gruppen zu jeweils zwei Zeichen. Binäre Zeichenfolgen müssen mit 0x eingeleitet werden. So muss beispielsweise für FF 0xFF eingegeben werden. Der Maximalwert ist ein Binärwert von 8000 Byte, wobei jedes Byte der Zeichenfolge FF entspricht. Die binary-Datentypen werden nicht für hexadezimale Daten, sondern für Bitmuster verwendet. Konvertierungen von und Berechnungen mit Hexadezimalzahlen, die als Binärwerte gespeichert sind, sind möglicherweise nicht zuverlässig.

Bei Längenangaben von binary-Datentypen zählen jeweils zwei Zeichen als ein Zeichen. Eine Längenangabe von 10 bedeutet beispielsweise, dass 10 aus jeweils zwei Zeichen bestehende Gruppen eingegeben werden.

Leere binäre Zeichenfolgen werden mit 0x dargestellt und können als binäre Daten gespeichert werden.

A. Verwenden von CAST und CONVERT

In jedem der Beispiele werden die Namen der Produkte abgerufen, deren Listenpreis mit der Ziffer 3 beginnt. Der ListPrice-Wert wird in einen int-Wert konvertiert.

-- Use CAST
USE AdventureWorks;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice
FROM Production.Product
WHERE CAST(ListPrice AS int) LIKE '3%';
GO

-- Use CONVERT.
USE AdventureWorks;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice
FROM Production.Product
WHERE CONVERT(int, ListPrice) LIKE '3%';
GO

B. Verwenden von CAST mit arithmetischen Operatoren

Im folgenden Beispiel wird eine einzelne Spalte (Computed) berechnet. Hierbei wird der aufgelaufene Jahresumsatz (SalesYTD) durch den Prozentsatz der Umsatzbeteiligung (CommissionPCT) geteilt. Dieses Ergebnis wird in einen int-Datentyp konvertiert, nachdem es auf die nächste ganze Zahl gerundet wurde.

USE AdventureWorks;
GO
SELECT CAST(ROUND(SalesYTD/CommissionPCT, 0) AS int) AS 'Computed'
FROM Sales.SalesPerson 
WHERE CommissionPCT != 0;
GO

Dies ist das Resultset.

Computed      
------ 
379753754
346698349
257144242
176493899
281101272
0
301872549
212623750
298948202
250784119
239246890
101664220
124511336
97688107

(14 row(s) affected)

C. Verwenden von CAST zur Verkettung

Im folgenden Beispiel werden nicht auf Zeichen basierende, nicht binäre Ausdrücke mithilfe von CAST verkettet.

USE AdventureWorks;
GO
SELECT 'The list price is ' + CAST(ListPrice AS varchar(12)) AS ListPrice
FROM Production.Product
WHERE ListPrice BETWEEN 350.00 AND 400.00;
GO

Dies ist das Resultset.

ListPrice
------------------
The list price is 357.06
The list price is 364.09
The list price is 364.09
The list price is 364.09
The list price is 364.09

(5 row(s) affected)

D. Verwenden von CAST zur Herstellung von besser lesbarem Text

Im folgenden Beispiel wird CAST in der SELECT-Liste verwendet, um die Name-Spalte in eine char(10)-Spalte zu konvertieren.

USE AdventureWorks;
GO
SELECT DISTINCT CAST(p.Name AS char(10)) AS Name, s.UnitPrice
FROM Sales.SalesOrderDetail s JOIN Production.Product p on s.ProductID = p.ProductID
WHERE Name LIKE 'Long-Sleeve Logo Jersey, M';
GO

Dies ist das Resultset.

Name       UnitPrice
---------- ---------------------
Long-Sleev 31.2437
Long-Sleev 32.4935
Long-Sleev 49.99

(3 row(s) affected)

E. Verwenden von CAST mit der LIKE-Klausel

Im folgenden Beispiel wird die money-Spalte SalesYTD in eine int-Spalte und anschließend in eine char(20)-Spalte konvertiert, sodass sie mit der LIKE-Klausel verwendet werden kann.

USE AdventureWorks;
GO
SELECT p.FirstName, p.LastName, s.SalesYTD, s.SalesPersonID
FROM Person.Contact p JOIN Sales.SalesPerson s ON p.ContactID = s.SalesPersonID
WHERE CAST(CAST(s.SalesYTD AS int) AS char(20)) LIKE '2%';
GO

Dies ist das Resultset.

FirstName        LastName            SalesYTD         SalesPersonID
---------------- ------------------- ---------------- -------------
Carol            Elliott             2811012.7151      279
Julie            Estes               219088.8836       288
Janeth           Esteves             2241204.0424      289

(3 row(s) affected)

F. Verwenden von CONVERT oder CAST mit typisiertem XML

In den folgenden Beispielen wird die Konvertierung in typisierte XML-Daten mithilfe von CONVERT und mit dem xml-Datentyp dargestellt.

In diesem Beispiel wird eine aus Leerzeichen, Text und Markup bestehende Zeichenfolge in typisierte XML-Daten konvertiert und alle bedeutungslosen Leerzeichen (Leerzeichen an der Grenze zwischen Knoten) entfernt.

CONVERT(XML, '<root><child/></root>')

In diesem Beispiel wird eine ähnliche, aus Leerzeichen, Text und Markup bestehende Zeichenfolge in typisierte XML-Daten konvertiert und alle bedeutungslosen Leerzeichen (Leerzeichen an der Grenze zwischen Knoten) beibehalten.

CONVERT(XML, '<root>          <child/>         </root>', 1)

In diesem Beispiel wird eine aus Leerzeichen, Text und Markup bestehende Zeichenfolge in typisierte XML-Daten umgewandelt:

CAST('<Name><FName>Carol</FName><LName>Elliot</LName></Name>'  AS XML)

Weitere Beispiele finden Sie unter Generieren von XML-Instanzen.

G. Verwenden von CAST und CONVERT mit datetime-Daten

Im folgenden Beispiel werden das aktuelle Datum und die aktuelle Uhrzeit dargestellt. CAST wird verwendet, um das aktuelle Datum und die aktuelle Uhrzeit in einen Zeichendatentyp zu ändern. Anschließend wird CONVERT verwendet, um das Datum und die Uhrzeit im ISO 8901-Format anzuzeigen.

SELECT 
   GETDATE() AS UnconvertedDateTime,
   CAST(GETDATE() AS nvarchar(30)) AS UsingCast,
   CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601  ;
GO

Dies ist das Resultset.

UnconvertedDateTime     UsingCast                      UsingConvertTo_ISO8601

----------------------- ------------------------------ ------------------------------

2006-04-18 09:58:04.570 Apr 18 2006 9:58AM            2006-04-18T09:58:04.570

(1 row(s) affected)

Das folgende Beispiel entspricht in etwa der Umkehrung des vorherigen Beispiels. In dem Beispiel werden ein Datum und eine Uhrzeit als Zeichendaten angezeigt, und CAST wird verwendet, um die Zeichendaten in datetime-Datentypen zu ändern. Anschließend wird CONVERT verwendet, um die Zeichendaten in den datetime-Datentyp zu ändern.

SELECT 
   '2006-04-04T15:50:59.997' AS UnconvertedText,
   CAST('2006-04-04T15:50:59.997' AS datetime) AS UsingCast,
   CONVERT(datetime, '2006-04-04T15:50:59.997', 126) AS UsingConvertFrom_ISO8601 ;
GO

Dies ist das Resultset.

UnconvertedText         UsingCast               UsingConvertFrom_ISO8601

----------------------- ----------------------- ------------------------

2006-04-04T15:50:59.997 2006-04-04 15:50:59.997 2006-04-04 15:50:59.997

(1 row(s) affected)

Version Verlauf

17. Juli 2006

Neuer Inhalt:
  • Beispiel G wurde hinzugefügt.

14. April 2006

Neuer Inhalt:
  • Eine Beschreibung des Zeitzonenindikators Z für den style-Wert 127 wurde hinzugefügt.
Anzeigen: