ywork2020.com

Title

データ型を変換する

目次 (INDEX)

CASTとは

ここで説明する CAST とは次の語句からなる SQL の関数です。
cast
読み: キャスト
意味: プログラミング言語の意味においては、「変換」

目次に戻る

CAST 関数の概要

この関数は引数に与えた値や列の値のデータ型を変換するために使用します。

変換できるデータ型は DB マネージメントシステムやバージョンによって異なるので、混乱を避けるために、 あえてこのページでは紹介しません。使っている DBMS やバージョンのデータ型を参考にしていただければと思います。

Oracle では CAST 関数以外に、データ型に特化した変換関数として、TO_CHAR 関数 ・ TO_NUMBER 関数 ・ TO_DATE 関数などもあります。 また、SQL Server では同じ働きをする CONVERT 関数も利用できます。

目次に戻る

サンプルコードと実行結果

ここからは実際に稼働しているデータベースに接続してクエリを実行していきます。 下記に配置された各ボタンをクリックすると、ボタンに書かれているサンプルクエリを実行して結果を表示します。

サンプルコード: SQL (CAST 関数の基本的な使い方)

SELECT CAST(変換対象値 AS 変換するデータ型);

CAST 関数には 2つの引数が必要です。 まず、変換したい値を直接に記述するか、変換したいカラム名を指定します。もちろん、ここに他の関数を交えても構いません。 その後に、AS で区切り、変換したいデータ型を記述します。

実行:

説明:
このサンプルには変換対象値に SYSDATE 関数 を使ってみました。この SYSDATE 関数はお使いの PC の現在日時、時刻を取得するための関数です。 変換する型には CHAR を使用しました

サンプルコード: SQL (日付文字列を日時型に変換してみる)

SELECT CAST(日付文字列 AS DATETIME);
実行:

説明:
このサンプルには変換対象値に文字列で記述した日付と時間を指定してみました。 変換するデータ型は DATETIME 型です。結果をみると年月日の区切り文字として使用した「/」スラッシュが「-」 に置き換えられています。変換は成功していますね。

サンプルコード: SQL (数値を文字型に変換してみる)

SELECT CAST(数値 AS CHAR);
実行:

説明:
このサンプルには変換対象値に数値を指定してみました。 変換するデータ型は CHAR 型です。結果をみると問題なく文字型に変換されています。と言いたいところですが、 非常に分かりづらいです。とりあえずエラーが出ていないので型変換は成功しているのですが、このサンプルでは文字型に変換できていると実証できません。 INSERT 文や UPDATE 文などで文字型カラムに登録することでしか実証できないと思われますが、セキュリティー上の問題で、ここではサンプルが作成できませんでした。 興味がある方は是非、自身での検証をお願いします。

代わりと言ってはなんですが、同じ数値を DATETIME 型に変換するサンプルです。 これを見ると明らかに違う型で変換されていることだけは、分かっていただけると思います。

検証:

もう 1つ、実証できるかもしれないサンプルを挙げておきます。4桁の文字型に変換してみると...

検証:
これなら実証できてるかもしれないですね。

目次に戻る

SQL の仕様上の注意点

※ SQL の予約句はアルファベットの大文字と小文字を区別しませんが、 任意で作成したデータベースやテーブル、カラムの名前などは区別されるので注意が必要です。

目次に戻る