【SQL】CASTでデータ型を変更する!使い方や注意点を解説

  • 2024.08.30
       
【SQL】CASTでデータ型を変更する!使い方や注意点を解説

データベースを操作する上で、データ型を変換することが求められることも多いと思います。そこで役立つのが「CAST」関数です。CASTを使用することでたとえば、文字列を日付のデータ形式に変更するといったことが簡単にできるようになります。本記事ではデータ型の種類やCASTでデータ型を変換する方法をサンプルコードを用いて解説します。

CASTとは

SQLのCASTとは、データ型を変更するのに用いられる関数です。CAST関数を用いることであるデータ型の値を別のデータ型に変換することができます。たとえば、文字列型の値を日付型や数値型に変換するといったことができます。

そもそもデータ型とは

SQLに限らず、プログラム上で適切にデータを取り扱う上で、データの形式を定義する「データ型」があります。

データ型とは、コンピュータ上でデータを判別するのに用いられるデータ形式の種類を指します。プログラムやデータベース上で変数やデータのメモリ領域に割り当てる際に、データの種類を示すのに用いられます。データ型の種類によって、データが判別され、適切な処理が実行されます。

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

SQLにおけるデータ型の種類

SQLにおけるデータ型の種類について代表的なものを紹介します。

数値型

データ型概要範囲
INTEGER整数型-2,147,483,648~2,147,483,647
FLOAT浮動小数点型-3.402823466E+38~-1.175494351E-38、0、1.175494351E-38~3.402823466E+38

文字列型

データ型概要最大格納可能文字数・サイズ数
CHAR固定長文字列型1から255文字まで指定可能
VARCHAR可変長文字列型約65,535文字まで指定可能
TEXT大文字列型約2GBまでのテキストデータを格納可能

※最大長・最大サイズはデータベースの種類によって異なります。

日付型

データ型概要格納内容
DATE日付型日付を格納する(年、月、日)
TIME時刻型時刻を格納する(時、分、秒)
DATETIME日付時刻型日付と時刻を格納する
TIMESTAMP日付時刻型一意のタイムスタンプを格納し、データの追加・更新時に自動で生成・更新される

バイナリ型

データ型概要格納内容
BINARY固定長バイナリ型固定長のバイナリデータを格納する
VARBINARY可変長バイナリ型可変長のバイナリデータを格納する
BLOB大バイナリ型画像、動画、音声など、大きなバイナリデータ(Binary Large Object)を格納する

※最大格納可能サイズ数はデータベースの種類によって異なります。

論理型

データ型概要格納内容
BOOLEANブール型真(TRUE)または偽(FALSE)、未定義(NULL)の値を格納する

※挙動はデータベースの種類によって異なります。

これらのデータ型は、データベースの種類によって名前、サポート範囲、挙動などが異なる場合があります。データ型はデータの特性と用途に合ったものを選択する必要があります。

CASTでデータ型を変更する方法

【基本構文】

CAST(変換する値やカラム AS 変換したいデータ型)

互換性のあるデータ型に対してのみCASTを適用できます。なお、CASTは、WHERE句などの一般的な式が許可される大抵のコンテキストで許可されています。

正常に変換が行われるよう適切なエラーハンドリングが必要になります。また、データの大きさや内容などによって、データの損失やエラーが発生する場合もあるため注意しましょう。

ここからは具体的なコードを紹介します。

1.文字列型をINTEGER(数値型)に変換する場合

【SQL実行コード】

SELECT CAST(id AS INTEGER) FROM student;

データ型の変更は重要な作業であるため、慎重に行う必要があります。まず、テスト環境で試してから本番環境で実行するのが望ましいです。

2.数値型を文字列型に変換する場合

【SQL実行コード】

SELECT CAST(100 AS VARCHAR(10))+'A';

【実行結果】

100A

【SQL実行コード】

SELECT CAST(100 AS CHAR(10))+'A';

【実行結果】

100      A

CHAR(固定長文字列型)だと変換されたことがわかりやすいですね。

3.文字列型を日付型に変換する場合

文字列をそれぞれ日付型「DATE」、日付時間型「DATETIME」に変換します。

【SQL実行コード】

SELECT CAST('2024-08-27' AS DATE);

【実行結果】

2024/08/27

【SQL実行コード】

SELECT CAST('2024-08-27 19:22:30' AS DATETIME);

【実行結果】

2024/08/27 19:22:30

CHAR(固定長文字列型)だと変換されたことがわかりやすいですね。

日付時間型「DATETIME」変換で時間部分を指定しないと「00:00:00」になります。

注意点

異なるフォーマットの場合

CAST関数で文字列型の値をDATETIME型に変換することで日付と時刻として扱えます。この際、標準的な日付フォーマットである場合は「DATETIME」で問題ありませんが、異なる形式の日付文字列を変換する場合は、「STR_TO_DATE」関数などを使用する必要があります。

たとえば、日付が「2024/08/27 19:22:30」という形式で格納されている場合は次のように記述します。

SELECT date_a,STR_TO_DATE(date_a,'%Y/%m/%d %H:%i:%s') AS datetime FROM sample;

テーブルのデータ型変更

元のテーブルのデータ型は変更されないためテーブル自体のデータ型を変更する場合は、「ALTER TABLE」文を使用します。

【基本構文】

ALTER TABLE テーブル名 ALTER COLUMN カラム名 変更したいデータ型

たとえば、「生徒(student)」テーブルの「ID(id)」カラムのデータ型を文字列型から数値型(INTEGER)に変更する場合は、次のように記述します。

【SQL実行コード】

ALTER TABLE student ALTER COLUMN id INTEGER;

まとめ

CASTを活用することでクエリや計算がしやすくなり、データの処理や分析も効率的に行えるようになります。実務でも数値から文字列への変換、文字列から数値への変換を使う機会は多くあります。使用するデータベースやデータに合わせてCAST関数を活用しましょう。

SQL関連記事

SQLの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、SQLに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事