苦手なデータ型の変換について。今回は暗黙的なデータ型変換について、説明します。
データ型変換について
データ型変換は、暗黙的なデータ型変換と明示的なデータ型変換の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してみます。
<実行するSQL>
INSERT INTO testidkanri
VALUES
('11',1,'20','20','2020/04/08');
文字→数値、数値→文字 、文字→日付に型が変更されてSQLが正常に実行されました。
SAMPLE2:式の評価
SAMPLE1と同じテーブルで以下のようにSELECT文を実行します。
select * from testidkanri
where id = '1';
IDは数値型ですが、ORACLEデータベースが数値に暗黙的に変換して、 式が評価されてSQLが正常に実行されました。