💻 データ型と型変換
データ型を理解し、必要に応じて変換する技術(型変換、またはタイプキャスティング)は、より複雑なクエリを書く上で必須のスキルです!
💾 第1章:データ型とは?
データ型とは、データベースに保存されている情報が「どのような種類か」を定義するものです。
1-1. なぜ型変換が必要なのか?
例えば、DATETIME型の列から日付だけを取り出したい場合や、「数字が文字列として保存されている」ため、そのままでは計算できない場合など、データ型を一時的に変更する必要があります。
🔄 第2章:型変換を行う二つの関数
SQL Serverで型変換を行うには、主にCASTとCONVERTの二つの関数を使います。どちらを使っても、ほとんどの場合で同じ結果が得られますが、構文が少し異なります。
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は、時には自動的に型変換(暗黙的な型変換)を行ってくれますが、予期せぬエラーやパフォーマンスの低下を防ぐため、意図的に CASTやCONVERTを使って型を指定する(明示的な型変換)ことが推奨されます。
