it-swarm.com.de

T-SQL Cast versus Convert

Wie lauten die allgemeinen Richtlinien für die Verwendung von CAST im Vergleich zu CONVERT? Gibt es irgendwelche Leistungsprobleme im Zusammenhang mit der Wahl eines im Vergleich zum anderen? Ist man näher an ANSI-SQL?

310
BuddyJoe

CONVERT ist SQL Server-spezifisch, CAST ist ANSI.

CONVERT ist flexibler, da Sie Datumsangaben usw. formatieren können. Ansonsten sind sie ziemlich gleich. Wenn Sie sich nicht für die erweiterten Funktionen interessieren, verwenden Sie CAST.

BEARBEITEN:

Wie von @beruic und @ C-F in den Kommentaren unten bemerkt, kann es zu Genauigkeitsverlusten kommen, wenn eine implizite Konvertierung verwendet wird (dh wenn Sie weder CAST noch CONVERT verwenden). Weitere Informationen finden Sie unter CAST und CONVERT und insbesondere in dieser Grafik: SQL Server Data Type Conversion Chart . Mit diesen zusätzlichen Informationen bleibt der ursprüngliche Rat gleich. Verwenden Sie nach Möglichkeit CAST.

326
Matthew Farwell

Convert verfügt über einen Style-Parameter für Konvertierungen von Datum in Zeichenfolge.

http://msdn.Microsoft.com/en-us/library/ms187928.aspx

27
jason saldo

CAST ist Standard-SQL, CONVERT jedoch nicht (nur für den Dialekt T-SQL). Wir haben einen kleinen Vorteil bei der Konvertierung in den Fall datetime

mit CAST geben Sie den Ausdruck und den Zieltyp an. Bei CONVERT gibt es ein drittes Argument, das den Stil für die Konvertierung darstellt, der für einige Konvertierungen unterstützt wird, z. B. zwischen Zeichenfolgen und Datums- und Zeitwerten. Beispielsweise konvertiert CONVERT (DATE, '1/2/2012', 101) die Literalzeichenfolge in DATE unter Verwendung des Stils 101, der den US-Standard darstellt.

grüße,

10

Zum Erweitern auf die obige Antwortkopiert von ShaktiIch konnte tatsächlich einen Leistungsunterschied zwischen den beiden Funktionen messen.

Ich habe die Leistung von Variationen der Lösung auf diese Frage getestet und festgestellt, dass die Standardabweichung und die maximalen Laufzeiten bei Verwendung von CAST größer waren.

Runtimes in milliseconds * Zeiten in Millisekunden, gerundet auf 1/300 Sekunde nach Genauigkeit vom Typ DateTime

5
Elaskanator

CAST verwendet den ANSI-Standard. Im Falle einer Portabilität funktioniert dies auf anderen Plattformen. CONVERT ist spezifisch für SQL Server. Ist aber sehr funktionsstark. Sie können verschiedene Stile für Datumsangaben angeben

4
RakeshP

Was noch niemand bemerkt zu haben scheint, ist die Lesbarkeit. Mit…

CONVERT(SomeType,
    SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    )

… Ist vielleicht leichter zu verstehen als…

CAST(SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    AS SomeType
    )
3
Atario