概要: このチュートリアルでは、SQL ServerのCAST()
関数を使用して、値や式をある型から別の型に変換する方法を学びます。
Introduction to SQL Server CAST()function
次のクエリを見てみましょう:
Code language: PHP (php)SELECT 1 + '1' AS result;
数字として2を返します。
result-----------2(1 row affected)
このステートメントでは、SQL Serverは文字列'1'
1
に暗黙のうちに変換しています。
データ型の異なる2つの値を使用する場合、SQL Serverは計算を処理する前に、低い方のデータ型を高い方のデータ型に変換しようとします。 これは、SQL Serverでは暗黙の変換と呼ばれています。
暗黙的な変換とは対照的に、CAST()
関数を呼び出して、ある型の値を別の型に明示的に変換する明示的な変換があります。
Code language: PHP (php)SELECT 1 + CAST(1 AS INT) result;
CAST()
関数の構文は次のようになります:
Code language: CSS (css)CAST ( expression AS target_type )
この構文の場合。
-
expression
には、リテラル値や、変換される任意の型の有効な式を指定できます。 -
target_type
INT
BIT
SQL_VARIANT
などがあります。 -
length
length
のデフォルトは 30 です。
CAST()
関数は、ターゲットのデータ型に変換された式を返します。
SQL Server CAST()関数の例
CAST()
関数の使用例をいくつか挙げてみましょう。
A) CAST()関数を使用して10進数を整数に変換する例
この例では、CAST()
5.95
を整数に変換します:
Code language: CSS (css)SELECT CAST(5.95 AS INT) result;
以下はその出力です。
result-----------5(1 row affected)
B) CAST()関数を使用して10進数を異なる長さの別の10進数に変換する
次の例では、CAST()
関数を使用して、10進数の5.95をゼロスケールの別の10進数に変換します:
Code language: CSS (css)SELECT CAST(5.95 AS DEC(3,0)) result;
出力は次のようになります:
result-------6
異なる場所にあるデータ型の値を変換した場合、SQL Serverは次のルールに基づいて切り捨てられた結果または丸められた値を返します。
データ型から タイプ | データタイプへ | ビヘイビア |
---|---|---|
数字 | ラウンド | |
数字 | int | 切り捨て |
数字 | お金 | ラウンド |
お金td | int | Round |
money | numeric | Round |
Round | float | int | Truncate |
float | numeric | Round |
float | datetime | Round |
datetime | int | Round |
C) Using CAST()function to convert a string to a datetime value example
この例では、CAST()
'2019-03-14'
をdatetimeに変換します:
Code language: PHP (php)SELECT CAST('2019-03-14' AS DATETIME) result;
出力は以下のとおりです。
Code language: CSS (css)result-----------------------2019-03-14 00:00:00.000(1 row affected)
D) 算術演算子を使ったCAST()関数の使用
サンプルデータベースのsales.orders
sales.order_items
のテーブルを使ってデモを行います。
以下のステートメントでは、CAST()
関数を使用して、2017年の月別売上高を整数値に変換しています。
Code language: PHP (php)SELECT MONTH(order_date) month, CAST(SUM(quantity * list_price * (1 - discount)) AS INT) amountFROM sales.orders o INNER JOIN sales.order_items i ON o.order_id = i.order_idWHERE YEAR(order_date) = 2017GROUP BY MONTH(order_date)ORDER BY month;
次の図は、出力結果です。
このチュートリアルでは、SQL ServerのCAST()
関数を使用して、ある型から別の型に値を変換する方法を学びました。