Oracle University 講師が ORACLE MASTER 取得を目指している方に向けて試験トピックを解説するブログ連載講座。「ORACLE MASTER Silver SQL 2019」資格取得に向けた試験トピックについて解説します。

————————————————-

今回はORACLE MASTER Silver SQLの試験トピック「変換関数と条件式の使用 – TO_CHAR、TO_NUMBERおよびTO_DATE関数の使用 -」に関連する問題をご紹介いたします。ORACLE MASTER Silver SQL(Exam Number: 1Z0-071-JPN)の詳細につきましては以下URLをご参考ください。

Oracle Database SQL Exam Number: 1Z0-071

URL: https://education.oracle.com/ja/oracle-database-sql/pexam_1Z0-071

————————————————-

それでは早速問題を確認していきましょう。今回はデータ型を変換する変換関数を使用した問題になります。

(解説)

では解説をしていきます。SQLには値をあるデータ型から別のデータ型に変換することができる変換関数が用意されています。この変換関数にはTO_NUMBER、TO_DATEおよびTO_CHARと3つ存在します。以下にそれぞれの関数の目的を記載しておきましょう。

関数

目的

TO_NUMBER

数字が含まれている文字列を、書式モデルの指定に従っての数値に変換します。

TO_DATE

指定した書式に従って日付を表す文字列を日付値に変換します。

TO_CHAR

書式モデルを使用して数値または日付値をVARCHAR2文字列に変換します。

尚、変換関数につきましては「第16回 単一行関数を使用した出力のカスタマイズ – 日付データを含む算術演算の実行 –」でも扱っていますので合わせてご確認いただければと思います。

今回の問題は数値型をTO_CHAR関数を使って文字列に変換する内容でした。文字列に変換する際に書式を指定して見やすくするという目的があるわけですね。TO_CHAR関数と組み合せて、数値を文字として表示できる書式要素についても以下にまとめておきます。

要素

説明

9

数値を表します。

0

ゼロを強制表示します。

$

浮動ドル記号を挿入します。

L

浮動各国通貨記号を表示します。

. (ドット)

少数点を出力します。

, (カンマ)

カンマを3桁の区切り記号として出力します。

理解するためには実際にSQLを動作させて確認するのが一番です。DUAL表を使って色々確認してみましょう(DUAL表については第9回の内容をご参考にしてください)。いくつか実行した結果を以下に乗せておきます。

最後のSQL文の結果が「#」となっていますが、これは指定した書式が整数の表示幅が4桁(9,999)であるのに対して、実際の数値の桁数が5桁あるためです。書式の指定は桁数に注意が必要ですね。DUAL表を使用すると簡単に動作確認ができますから皆さんも実際に実行してみてください。

さて、それでは問題の選択肢をみていきましょう。

今回の問題で指定している書式は「$9,999」になりますから、$記号を付与し、カンマ区切りを使用して、少数部は表示しない整数部4桁まで表示可能、という内容ですね。

選択肢の1と2はPRODUCT_IDが10の値に関する内容です。PRODUCT_IDが10のPRODUCT_PRICEは「1300.15」になりますが、指定した書式に従って小数部は表示しない動作となります。このとき小数値は四捨五入され、整数値の表示ということで少数第1位を四捨五入する動作となります。結果として「$1,300」が表示されますので選択肢1は誤りで2は正しい内容になります。

選択肢3と4はPRODUCT_IDが20の値に関する内容なのでPRODUCT_PRICEは「2500.5」になります。同様に整数部のみの表示となりますので少数第1位が四捨五入されて、結果は「$2,501」になります。選択肢の3は誤りで4が正しい内容です。

選択肢5と6はPRODUCT_IDが30の値に関する内容で、PRODUCT_PRICE「9999.99」が対象の数値になりますが、どちらの選択肢も誤りです。「9999.99」の少数第1を四捨五入すると「10000」となるため5桁の数値になります。そのため書式で指定した桁数と合わなくなってしまい「#######」が結果として返ります。

選択肢7が正しい内容です。指定した書式と桁数に問題があるため「#######」が結果として表示されます。

以上の結果から、正解の選択肢は2と4と7になります。

今回の問題文に記載してあったSQL文の実行結果と、SQL文が実行できるようにサンプル定義を以下に乗せておきますので是非SQL文を色々実行して理解を深めてください。

(サンプル定義)

drop table product_table;

create table product_table (product_id number(3), product_price number(8,2));

 

insert into product_table values(10, 1300.15);

insert into product_table values(20, 2500.50);

insert into product_table values(30, 9999.99);

insert into product_table values(110, 18000.55);

 

commit;

今回の講義はこれで終了とします。次回も頑張っていきましょう!

————————————————-

ORACLE MASTER Silver SQL 2019 のご紹介

ORACLE MASTER Silver SQL 2019 試験記事トピック一覧

————————————————-

その他の ORACLE MASTER 試験トピック解説講座シリーズ:

【Oracle University講師によるORACLE MASTER Gold DBA 2019 試験トピック解説講座】トピック一覧

————————————————-