SQL Serverでは、CAST()
関数は、あるデータ型の式を別のデータ型に変換します。
関数の概要と例を次に示します。
構文
構文は次のようになります:
CAST ( expression AS data_type [ ( length ) ] )
expression
の場所 変換する式、data_type
は新しいデータ型であり、length
新しいデータ型のオプションの長さです。
例
文字列を10進数としてキャストする例を次に示します。
SELECT CAST('007' AS DECIMAL(5,2));
結果:
7.00
現在までの文字列
文字列を日付にキャストする例は次のとおりです。
SELECT CAST('09 Feb 2030' AS date);
結果:
2030-02-09
この場合、CAST()
関数は、認識できる形式で日付を指定したため、どの日付部分がどれであるかを判別できました。
日付としてキャストできない値を渡すと、エラーが発生します:
SELECT CAST('Next Xmas' AS date);
結果:
Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string.
ロケール
現在のセッションの言語は、日付の解釈方法に違いをもたらす可能性があります。
英国の言語を使用すると、次のようになります。
SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);
結果:
2030-02-09
この場合、日付は2月9日であると解釈されました。
言語をus_English
に変更しましょう :
SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);
結果:
2030-09-02
今回は、日付を9月の2日目と解釈しました。
文字列の連結
値を文字列と連結するために数値を文字列にキャストする例を次に示します。
SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));
結果:
Likes: 178
キャストしないとどうなりますか:
SELECT 'Likes: ' + 178;
結果:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Likes: ' to data type int.
2つの値を異なるデータ型で連結しようとする場合、SQL Serverは、一方の値を暗黙的に変換して、もう一方のデータ型を使用する必要があります。これにより、連結を実行する前に、両方が同じデータ型になります。この変換を行うには、データ型の優先順位の規則に従います。
SQL Serverでは、INT
データ型はVARCHAR
よりも優先されます 。
したがって、上記の例では、SQLServerは文字列を整数に変換しようとします。ただし、文字列を整数に変換できないため、これは失敗します。
テキストの切り捨て
CAST()
で実行できる便利なトリックの1つ 関数は、長い文字列をより読みやすい長さに切り捨てることです。
データベーステーブルから選択されたテキストを切り捨てる例を次に示します。
SELECT
ProductName,
CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;
結果:
+---------------------------------+----------------------+ | ProductName | Truncated | |---------------------------------+----------------------| | Left handed screwdriver | Left handed screwdri | | Long Weight (blue) | Long Weight (blue) | | Long Weight (green) | Long Weight (green) | | Sledge Hammer | Sledge Hammer | | Chainsaw | Chainsaw | | Straw Dog Box | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu | | Right handed screwdriver | Right handed screwdr | +---------------------------------+----------------------+
詳細情報
CAST()
関数はCONVERT()
と同じように機能します 関数、および多くのデータ変換はどちらかを使用して行うことができます。とはいえ、それらの間には違いがあります。
CAST()
については、Microsoftのドキュメントを参照してください。 およびCONVERT()
この関数の使用の詳細については、