Oracle SQL Bronze web問題集【変換関数】
Sal
sql oracleマスターbronzeのweb問題集です。間違いやすい問題に厳選してあります。

Oracle SQL Bronze web問題集【変換関数】

  1. 次のSQLを実行した結果を選べ
  2. NULLの取扱について
  3. IF-THEN-ELSEロジック
  4. 日付書式指定
  5. 日付書式指定2
  6. 型変換(数値)
  7. 日付書式指定3
  8. NULLIF(式1,式2)
## 次のSQLを実行した結果を選べ

SELECT
    TO_CHAR(123456.78, '99,999')
FROM
    dual;
A: 123456,78

B: 123,456.78

C: 指定した桁数よりも桁が多いのでエラーになる

D: 1234,56.78

E: ########

答えはここをクリック!

E: ########。 TO_CHARの書式指定は桁数を超えると全て#になる
## NULLの取扱について
COMM列がNULL出ない場合はCOMMの値を戻し、 COMMの値がNULLでなおかつMGR(上司の社員番号)がNULL出ない場合は MGRを戻し、COMMもMGRもNULLの場合はEMPNOを返すSQL文として正しいものを選べ。 なお、これらのカラムは全てNUMBER(7)型とする。 A: SELECT COALESCE(COMM, mgr, empno) FROM employees; B: SELECT COALESCE(COMM, TO_CHAR(mgr), empno) FROM employees; B: SELECT NULLIF(com, mgr, empno) FROM employees C: SELECT NVL(com, mgr, empno) FROM employees; D: SELECT NVL2(comm, mgr, empno) FROM employees;

答え

A: SELECT COALESCE(COMM, mgr, empno) FROM employees;

COALESCE関数は式を順番にチェックして最初に見つかったNULL出ないものを返す。

また、引数は全て同じ型出ないとエラーが起きるので、Bは間違い。

## IF-THEN-ELSEロジック
IF-THEN-ELSEロジックとして間違ったものを選べ A: IF B: WHILE C: CASE D: DECODE

答え

AとB

whileもifも通常のsqlには存在しない。

## 日付書式指定
今年を2014年7月26日とする。 次のSQL文の実行結果を選べ。

SELECT
  TO_CHAR(TO_DATE('07-26-95'), 'MM-DD-RR'), 'YYY-MM-DD'),
  TO_CHAR(TO_DATE('07-26-45'), 'MM-DD-RR'), 'YYY-MM-DD)
FROM
  dual;
A: 1995-08-26 2024-07-26 B: 1995-07-26 1945-07-26 C: 2007-26-95 1945-07-26 D: 2095-07-26 1945-07-26

答え

D: 1995-07-26と2045-07-26

理由: RRは「現在の年号に近い値として解釈する」 45をRRに当てはめた時、現在の年号に近い値は2945年ということになる

## 日付書式指定2
今日を2014年5月26日とする。 出力結果が次の値になるようなクエリを選べ Twenty-Sixth of May,2014 A: SELECT TO_CHAR(sysdate, 'Ddspth "of" Month YYYY') B: SELECT TO_CHAR(sysdate, 'fmDdspth "of" month YYYY') C: SELECT TO_CHAR(sysdate, 'fmDdspth "of" Month YYYY') D: SELECT TO_CHAR(sysdate, 'ddthsp "of" month YYYY')

答え

B: SELECT TO_CHAR(sysdate, 'fmDdspth "of" month YYYY')

FMを指定することで、Mayの後の空白は削除される

また、Ddは先頭のみが大文字の月日を表す。ddだと両方とも小文字になる

最後に、スペル表記を表すspthかthspを指定する。

## 型変換(数値)
次のSQLの実行結果はどれか SELECT TO_CHAR(999999.99, '$9,999,999.000') FROM dual; A: $0,999,999.000 B: $999,999,000 C: $999,999.990 D: $999,999,99

答え

C: $999,999.990

$はお金という意味

数値の書式「9」は通常の数字という意味

数値書式「0」は0梅の数字

,や.はそのまま表示される。

## 日付書式指定3
HIREDATEの曜日順(月から始まり、に社員を並び替えるSQLを選べ A: SELECT * FROM employees ORDER BY TO_CHAR(hiredate-1, 'DAY') B: SELECT * FROM employees ORDER BY TO_CHAR(hiredate, 'DAY') C: SELECT * FROM employees ORDER BY TO_CHAR(hiredate, 'D') D: SELECT * FROM employees ORDER BY TO_CHAR(hiredate-1, 'D') E: SELECT * FROM employees ORDER BY TO_CHAR(hiredate+1, 'D')

答え

D: SELECT * FROM employees ORDER BY TO_CHAR(hiredate-1, 'D')

曜日の日付書式は'DAY','DY','D'の三つがある

'DAY'は「日曜日,月曜日,」'DYは「日,月,,,」'D'は「1,2,3,,,,」 と増えていく

そこから一日増やさなければならないため、hiredate-1を指定する。

## NULLIF(式1,式2)
NULLIFはどれが強いか A: 二つの値を比較して、等しければNULLを返す B: 二つの値を比較して等しくなければ式2を返す C: 式1にNULLを入れることはできない

答え

A: 二つの値を比較して、等しければNULLを返す,C: 式1にNULLを入れることはできない

NULLIFは等しければNULLを返し、異なれば「式1」を返す。式1にはNULLを入れることはできない

title:Oracle SQL Bronze web問題集【変換関数】 description:oracleマスターbronzeのweb問題集です。間違いやすい問題に厳選してあります。 img:https://s3-ap-northeast-1.amazonaws.com/i.schoo/images/class/600x260/3456.jpg category_script:page_name.startswith("50")