SQL SELECT文を使用したデータの取得複数選択4

以下の実行結果を表示するためのSQL文はどれですか。

ORACLE DATABASE's BEST DATASE

ASELECT 'ORACLE DATABASE's BEST DATABASE' FROM dual;
BSELECT 'ORACLE DATABASE''s BEST DATABASE' FROM dual;
CSELECT q'(ORACLE DATABASE's BEST DATABASE)' FROM dual;
DSELECT q'AORACLE DATABASE's BEST DATABASEA' FROM dual;
解説正答:B・C・D

文字リテラルの中に一重引用符(')を含めたい場合の表記方法は2つあります:

  1. 一重引用符を2つ続けて記述する'' でエスケープ)
  2. q引用符構文を使うq'<任意の区切り文字>文字リテラル<同じ区切り文字>'

各選択肢の検討:

  • A'ORACLE DATABASE's...' のように生の ' を含むため、構文エラー。
  • BDATABASE''s' を2つ続けてエスケープしているので正しい。
  • C:q引用符構文で区切り文字に () を使用。括弧類は対応する閉じ括弧で終わる。
  • D:q引用符構文で区切り文字に A を使用。任意の1文字が区切り文字になる。

q引用符構文は、リテラル内に ' が多く含まれる場合に可読性が高くなる便利な記法です。

例:

SELECT q'[It's "Today's" report]' FROM dual;