SQLでの0埋め(ゼロパディング)について詳しく解説します。基本的な方法から応用テクニック、各データベースでの違いまで幅広くカバー。あなたのSQLスキルを次のレベルに引き上げる秘訣とは?
SQLキャストでデータ型を変換する基礎と応用テクニック
データベース操作で避けては通れないデータ型の変換。SQLのCAST関数とCONVERT関数の使い方から実践的なテクニックまでを解説します。あなたのSQLスキルを次のレベルに引き上げる方法とは?
データ型変換の基本となるCAST関数の構文について説明します。最も基本的な形式は以下の通りです:
CAST(変換する値 AS 変換後のデータ型)
具体例を見てみましょう:
-- 文字列から数値への変換
SELECT CAST('123' AS INTEGER) AS converted_number
-- 数値から文字列への変換
SELECT CAST(456 AS VARCHAR(10)) AS converted_string
-- 文字列から日付への変換
SELECT CAST('2024-12-17' AS DATE) AS converted_date
データ型変換時のエラーを適切に処理することは重要です。TRY_CAST関数を使用すると、変換に失敗した場合にNULLを返すため、エラーを防ぐことができます:
-- TRY_CASTを使用した安全な変換
SELECT TRY_CAST('invalid_date' AS DATE) AS safe_conversion
SELECT TRY_CAST('123.45' AS INTEGER) AS number_conversion
実務でよく遭遇する具体的なシーンでの活用例を紹介します:
-- 集計関数での使用例
SELECT
department_id,
CAST(AVG(CAST(salary AS DECIMAL(10,2))) AS VARCHAR(10)) || '円' AS avg_salary
FROM employees
GROUP BY department_id
-- 日付計算での活用
SELECT
order_id,
CAST(order_date AS DATE) + INTERVAL '7' DAY AS delivery_date
FROM orders
主要なデータベース製品間でのキャストの違いと互換性について解説します:
データベース | 文字列→数値 | 数値→日付 | NULL処理 |
---|---|---|---|
MySQL | CAST/CONVERT | STRTODATE | IFNULL |
PostgreSQL | CAST::type | TO_DATE | COALESCE |
Oracle | TO_NUMBER | TO_DATE | NVL |
SQL Server | CAST/CONVERT | CONVERT | ISNULL |
大量データを扱う際のパフォーマンスを考慮したキャスト方法について説明します:
-- インデックスを活かせる書き方
SELECT * FROM sales
WHERE CAST(transaction_date AS DATE) = '2024-12-17'
-- インデックスが使えない書き方(非推奨)
SELECT * FROM sales
WHERE transaction_date = CAST('2024-12-17' AS TIMESTAMP)
-- テーブル作成時に型変換を行う
CREATE TABLE converted_data AS
SELECT
CAST(column1 AS INTEGER) AS num_column,
CAST(column2 AS DATE) AS date_column
FROM source_table
参考リンク:
PostgreSQLの公式ドキュメント - 型変換関数の詳細な説明