オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

SQL基礎 暗黙的なデータ型変換 oracleデータベース

苦手なデータ型の変換について。今回は暗黙的なデータ型変換について、説明します。

 

 

データ型変換について

データ型変換は、暗黙的なデータ型変換と明示的なデータ型変換の2つがあります。

 

暗黙的なデータ型変換

特定のデータ型のデータを想定する場合で、別のデータ型のデータを受け取ったときにORACLEデータベースが自動で想定するデータ型に変換する機能・仕組みです。

 

明示的なデータ型変換

書式を変更し式の評価、表示される書式をデフォルトとは異なるものにしたい場合、データ型の変換関数を使用して、型を変換します。

 

暗黙的なデータ型変換の詳細

暗黙的なデータ型の変換規則は以下の通りです。

 

代入時の変換前→変換後

文字:VARCHAR2またはCHAR→数値:NUMBER

文字:VARCHAR2またはCHAR→日付:DATE

数値:NUMBER→文字:VARCHAR2

日付:DATE→文字:VARCHAR2

 

式評価時の変換前→変換後

文字:VARCHAR2またはCHAR→数値:NUMBER

文字:VARCHAR2またはCHAR→日付:DATE

 

 

文字↔数値または日付への変換は可能(WHERE句などの式評価時は、文字→数値・日付のみ)。数値↔日付の変換はできません。

暗黙的なデータ型変換でデータ型を変換しても、データの書式は変換されないので注意です。

 

暗黙的なデータ型変換の例

代入時の暗黙的な型変換

数値型のID、DEPARTMENT_ID、COUTRY_IDに文字列、文字型のNAMEに数値、日付型のHIREDATEに文字列をINSERTしてみます。

f:id:auroralights:20200405233444p:plain

f:id:auroralights:20200405233316p:plain

<実行するSQL

INSERT INTO testidkanri
VALUES
('11',1,'20','20','2020/04/08');

f:id:auroralights:20200405233328p:plain

文字→数値、数値→文字 、文字→日付に型が変更されてSQLが正常に実行されました。

 

SAMPLE2:式の評価

SAMPLE1と同じテーブルで以下のようにSELECT文を実行します。

 

select * from testidkanri
where id = '1';

 

IDは数値型ですが、ORACLEデータベースが数値に暗黙的に変換して、 式が評価されてSQLが正常に実行されました。