T-SQLキャストと変換


325

あなたが使用する必要があるときに一般的なガイダンスは何であるCAST対はCONVERT?どちらを選択するかに関するパフォーマンスの問題はありますか?ANSI-SQLに近いですか?

回答:


339

CONVERTSQL Server固有、CASTANSIです。

CONVERTは日付などをフォーマットできるという点でより柔軟です。それ以外は、ほとんど同じです。拡張機能を気にしない場合は、を使用してくださいCAST

編集:

以下のコメントの@beruicと@CFで示されているように、暗黙の変換(CASTもCONVERTも使用しない変換)を使用すると、精度が失われる可能性があります。詳細については、CASTおよびCONVERTを参照してください。特に、このグラフィック:SQL Serverデータ型変換チャートを参照してください。この追加情報があっても、元のアドバイスは変わりません。可能な場合はCASTを使用してください。


5
また、精度を維持するためにCASTを使用する必要がある数値変換があると思いますが、この情報の信頼できるソースを見つけるのに苦労しています。
beruic 2013年

2
@beruicそうです、MSDNに情報があります:msdn.microsoft.com/en-us/library/ms187928.aspx DECIMAL型とNUMERIC型の間で変換するときに精度を維持するには、CASTが必要です。
CF

@CFこの情報はどこにありますか?私はCASTおよびCONVERTの一般的なページを開くリンクをたどりました。精度に関する唯一の情報は、科学表記法を使用する浮動小数点値の変換に関するものです。私の最初のコメントは間違っているのでしょうか?
beruic 14年

6
@beruicそれは記事の下部に、この絵についてですi.msdn.microsoft.com/dynimg/IC170617.gif今、私は多分、精度の損失は暗黙の型変換で発生する可能性がありますし、どちらかCASTまたはCONVERTを使用する場合は発生しませんと思います。はっきりしない...
CF

2
@CFあまり明確ではないことに同意します。また、より具体的なドキュメントがあるはずなので、Microsoftがそうすることを期待しましょう。しかし、そこにはよく見られます:)
beruic


12

CASTは標準SQLですが、CONVERTは方言T-SQL専用です。日時の場合、変換には小さな利点があります。

CASTでは、式とターゲットタイプを指定します。CONVERTには、変換のスタイルを表す3番目の引数があります。これは、文字列と日付時刻値の間など、一部の変換でサポートされています。たとえば、CONVERT(DATE、 '1/2/2012'、101)は、米国標準を表すスタイル101を使用して、リテラル文字列をDATEに変換します。


8

Shaktiによってコピーされた上記の答えを拡張するために、私は実際に2つの関数のパフォーマンスの違いを測定することができました。

私はこの質問に対するソリューションのバリエーションのパフォーマンスをテストしていましたが、を使用すると、標準偏差と最大ランタイムが大きくなることがわかりましたCAST

ミリ秒単位のランタイム *ミリ秒単位の時間。型の精度に応じて、1/300秒単位で最も近い値に丸められます。DateTime


6

だれもまだ気付いていないように見えるのは、読みやすさです。持っている…

CONVERT(SomeType,
    SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    )

…より理解しやすいかもしれません…

CAST(SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    AS SomeType
    )

2
ただし、通常、CASTの方が読みやすいと思います。長い式CAST(Column1 AS int)よりCONVERT(int, Column1)も読む方が論理的です
S.Serpooshan

4

CASTはANSI標準を使用します。移植性がある場合、これは他のプラットフォームでも機能します。CONVERTはSQLサーバーに固有です。しかし、非常に強力な機能です。日付には異なるスタイルを指定できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.