単一行関数を使用した出力のカスタマイズ:間違いやすいポイントを追え! Bronze SQL基礎I(4)(1/2 ページ)
Oracleデータベースエンジニアとしての基礎力を証明するORACLE MASTER Bronzeの取得を目指すITエンジニアは多い。本連載で間違いやすいポイントを確認し、合格に近づこう!
前回「SQLでのデータの制限とソート」では、WHERE句で使用できる比較演算子、ORDER BY句の利用方法を学習しました。
今回は、以下の項目について確認します。
- 単一行関数
- 変換関数
単一行関数の種類と使用方法
■例題1
次のデータと要件を確認してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次の文を実行したとき、戻される値として正しいものを選択してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
a.10
b.6
c.3
d.4
■例題の範囲をおさらい
参考:「SQLで使える関数の基礎知識」
LENGTHは、単一行関数の一種である文字関数の1つで、引数で指定した文字データの文字数を戻します。
(例)
LENGTH('ABCD')→4
■正解
a
■解説
問題のSQL文を実行すると、以下のような結果が戻ります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この問題でポイントとなるのは、値が格納されている列のデータ型です。
問題文に提示されているデータから分かるように、COL2はVARCHAR2型、COL3はCHAR型です。VARCHAR2型は可変長文字データであり、CHAR型は固定長文字データです。
以下の結果を確認してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このように、VARCHAR2型の場合は、全角半角に関係なく、入っている値の文字数を戻します。しかし、CHAR型は固定長であるため、設定された文字数を戻します。
よって、正解はaの「10」です。
■例題2
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記のSQL文を実行した結果として正しいものを1つ選択してください。
a.2008-07-01
b.2008-06-31
c.2008-06-30
d.エラーになる
■例題の範囲をおさらい
参考:「SQLで使える関数の基礎知識」
ADD_MONTHSは、単一行関数の一種である日付関数の1つで、日付に月数を加算します。
ADD_MONTHS('date', m)のように2つの引数を取り、dateにm月を加算します。mの値が負の場合は、m月を減算します。
■正解
c
■解説
問題のSQL文を実行すると、以下のような結果が戻ります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この問題のポイントは、引数として指定された5月31日が、月の最後の日であることです。
通常は、引数に指定された値に、そのまま加算または減算します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
しかし、指定された日が月の最後の日の場合は、加算した結果である月の最後の日を戻します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
よって、正解はcの「2008-06-30」です。
Copyright © ITmedia, Inc. All Rights Reserved.