Oracle試験道場

1Z0-071 · Silver SQL

集合演算子の使用

★★★☆☆
Q14of 20

以下のSQL文で、何件のデータが返されますか。Silver SQL14

以下のSQL文で、何件のデータが返されますか。

SELECT UPPER('a'), 100 FROM dual
UNION
SELECT 'A', ROUND(TRUNC(101,-1)) FROM dual
UNION
SELECT INITCAP('a'), MOD(1100,1000) FROM dual;

Choices選択肢

  • A0件
  • B1件正解
  • C2件
  • D3件
  • Eエラー
Answer

正解は、Bです

Explanation解説

各SELECT文を評価していくと、すべて 'A'100 を返します。

1つ目のSELECT:

UPPER('a') = 'A'
100        = 100

2つ目のSELECT:

'A'                   = 'A'
TRUNC(101, -1)        = 100  (-1なので10の位で切り捨て)
ROUND(100)            = 100

3つ目のSELECT:

INITCAP('a')          = 'A'  (1文字目を大文字にする)
MOD(1100, 1000)       = 100  (1100 ÷ 1000 の余り)

3つすべてが ('A', 100) を返します。

UNION の特性: 重複行を自動的に削除します。そのため、結果として返るのは 1件のみ です。

集合演算子の比較:

演算子動作
UNION和集合(重複を排除、結果がソートされる)
UNION ALL和集合(重複を保持、ソートなしで高速)
INTERSECT積集合(両方に含まれる行)
MINUS差集合(左から右を引いたもの)

もし UNIONUNION ALL に変えると、3件返ります。