- SQL ServerのSQL内でよく使う変関係関数をメモしておきます。
- ここでは、
CAST
,CONVERT
,FORMAT
,PARSE
について書いています。
目次
4つの変換系関数の違い
4つは変換系関数ということで似ているんですが、違いを簡単にまとめると以下のようになります。
CAST
とCONVERT
は型変換CAST
はスタイルを指定できないCONVERT
はスタイルを指定できる- この2つは語順が反対(どうしてこうなった…)
FORMAT
とPARSE
は型⇔文字列の指定した形式での変換FORMAT
は型→文字列PARSE
は文字列→型
なお、CAST
とCONVERT
とPARSE
には、変換に失敗したらエラーとするのではなく、NULL
を返却するTRYバージョンが(それぞれTRY_CAST
、TRY_CONVERT
、TRY_CAST
)というものが存在します。
CAST
CASTが一番シンプルな形になります。
CASTの構文
CAST(expression AS data_type [(length)])
expression
の部分に値が入り、その値をdata_type
の型に変換してくれますlength
は型の桁数を指定しますが、省略可能です値 AS 型
という形になるため、英語圏の人にとって読み下しやすい形式なのかもしれません- 変換元の値は任意なので、どんな型でも構いませんが、マッチングタイプがあって、それに外れると変換エラーとなってしまいますので注意しましょう。(変換表を参照)
- 例えば、numericからdateへの変換は「×」になっていますので、エラーなります。
例1 文字列'12.34'をdecimalに変換する
CAST('12.34' AS decimal(4, 2)) -- 12.34
例2 文字列'12.34'をdecimalに変換する
CAST('12.34' AS decimal) -- 12
例3 文字列を日付型に変換する
CAST('2020/12/22' AS date) -- 2020-12-22 (date型)
CONVERT
CONVERT関数は、任意の値を指定した型に変換する関数です。
CAST関数との違いとしては、style
を指定して、型と同時に値の表現も変換できることろです。
CONVERTの構文
CONVERT(data_type [(length)], expression [, style])
expression
の部分に値が入り、その値をdata_type
の型に変換してくれますlength
は型の桁数を指定しますが、省略可能ですstyle
の部分に値の表現の仕方を指定します。data_type
のグループごとに指定できる値が違い、種類も多いので、下に表でまとめておきます。- 変換元の値は任意なので、どんな型でも構いませんが、マッチングタイプがあって、それに外れると変換エラーとなってしまいますので注意しましょう。(変換表を参照)
- 例えば、numericからdateへの変換は「×」になっていますので、エラーなります。
日付と時刻のスタイル (Date and Time styles)
文字列型から日付型や時刻型に変換したり、その逆に日付型や時刻型から文字列型に変換したりします。
文字列型に変換する場合は、上記のリンク先の表の Input/Output に示した形式で出力されます。
表はまた後で書きます。
floatとrealのスタイル(float and real styles)
また後で書きます。
moneyとsmallmoneyのスタイル(money and smallmoney styles)
また後で書きます。
XMLスタイル(xml styles)
また後で書きます。
バイナリスタイル(Binary styles)
また後で書きます。
FORMAT
FORMATは…また後で書きます。
PARSE
他の3つに比べるとちょっと知名度が落ちるんじゃないかと思いますが、知っていると便利です。
また後で書きます。