9. MS SQL データ型と型変換

 


💻 データ型と型変換

データ型を理解し、必要に応じて変換する技術(型変換、またはタイプキャスティング)は、より複雑なクエリを書く上で必須のスキルです!


💾 第1章:データ型とは?

データ型とは、データベースに保存されている情報が「どのような種類か」を定義するものです。

データ型(例)意味格納されるデータの例
INT整数(数字)100, 5000
VARCHAR文字列(テキスト)'佐藤', '東京支店'
DATE日付のみ2025-10-14
DATETIME日付と時刻2025-10-14 10:30:00

1-1. なぜ型変換が必要なのか?

例えば、DATETIME型の列から日付だけを取り出したい場合や、「数字が文字列として保存されている」ため、そのままでは計算できない場合など、データ型を一時的に変更する必要があります。


🔄 第2章:型変換を行う二つの関数

SQL Serverで型変換を行うには、主にCASTCONVERTの二つの関数を使います。どちらを使っても、ほとんどの場合で同じ結果が得られますが、構文が少し異なります。

2-1. CAST(キャスト)関数

CASTは、SQLの標準規格に近い書き方で、シンプルです。

| 構文 | CAST(変換したい値 AS 変換後のデータ型) |

【例題】現在の日時(DATETIME型)を日付のみ(DATE型)に変換する

SELECT
    GETDATE() AS OriginalDateTime, -- 元のDATETIME型 (例: 2025-10-14 06:48:28.000)
    CAST(GETDATE() AS DATE) AS CastedDate;  -- DATE型に変換 (例: 2025-10-14)

2-2. CONVERT(コンバート)関数

CONVERTは、SQL Server独自の関数で、変換後のデータ型を先に指定します。

| 構文 | CONVERT(変換後のデータ型, 変換したい値, [スタイル]) |

【例題】同じくDATETIME型をDATE型に変換する

SELECT
    CONVERT(DATE, GETDATE()) AS ConvertedDate;

💡 豆知識: CONVERTにはスタイル(Style) というパラメーターがあり、日付や通貨を特定の表示形式に変換したいときに便利ですが、基本的な変換では省略して構いません。


⚠️ 第3章:型変換の注意点

3-1. 変換できない組み合わせがある

すべてのデータ型が自由に変換できるわけではありません。論理的に変換が不可能な場合は、エラーが発生し、クエリが停止します。

【エラー例】文字列を無理やり整数に変換しようとする

SELECT
    CAST(FirstName AS INT)
FROM
    Person.Person;

-- ❌ エラー!「ROBERT」のような文字列は、数値(INT)に変換できません。

3-2. データの欠落に注意

型変換によって、情報の一部が失われることがあります。

【例】 DATETIME型をDATE型に変換した場合、時刻の情報(時、分、秒)は切り捨てられ、失われます。これは意図した動作かもしれませんが、注意が必要です。

3-3. 明示的な型変換の重要性

SQLは、時には自動的に型変換(暗黙的な型変換)を行ってくれますが、予期せぬエラーやパフォーマンスの低下を防ぐため、意図的に CASTCONVERTを使って型を指定する(明示的な型変換)ことが推奨されます。