PREPARATION
受験対策

Silverの例題解説
「S3.2 組み込み関数(文字列演算子)」

今回は、Silverの「S3 開発/SQL - S3.2 組み込み関数(文字列演算子)」からの出題です。

例題

3.37

テーブル test には TEXT型の列 val1 と val2 がある。val1 と val2 を結合する(例えば、val1が’ABC’でval2が’123’なら’ABC123’を返す)にはどうしたら良いか。ただし、一方がNULLのときは、他方の値を返す(例えば、val1が’XYZ’でval2がNULLの時は’XYZ’を返す)ものとする。適切なものを2つ選びなさい。

  1. SELECT val1 || val2 FROM test;
  2. SELECT val1 + val2 FROM test;

  3. SELECT val1 . val2 FROM test;

  4. SELECT concat(val1, val2) FROM test;

  5. SELECT coalesce(val1, ‘’) || coalesce(val2, ‘’) FROM test;

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2014年2月6日

解答と解説

文字列を結合するときに利用するSQL標準の演算子は || です。val1 || val2 とすると、val1 と val2 を結合した文字列が返されますが、一方が NULL の場合は、結合の結果が NULL になります。
COALESCE関数を使うと、NULL値を他の値で置き換えることができ、coalesce(val1, ‘’)とすると、val1がNULLでなければval1、NULLの時は空文字を返します。これを使って選択肢Eのようにするのが、1つの解決策です。
PostgreSQL 9.1で追加されたconcat関数を使っても、文字列の結合ができますが、この関数はNULLを無視します。

従って、正解はDとEです。

なお、文字列の結合については、RDBMSの種類によって、一部、実装が異なります。例えばOracleでは || を使った時でもNULLを無視した結合をします。MySQLでは || が論理和の演算子であり、文字列結合には concat 関数を使いますが、NULLが無視されず、引数の1つがNULLだと結合結果もNULLになります。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors