SQL4 択難易度 基礎

次の SQL は標準 SQL として誤りがある。正しく直したものは?

SELECT * FROM data WHERE q="b";

正答

  1. SELECT * FROM data WHERE q=b;
  2. SELECT * FROM data WHERE q='b';
  3. SELECT * FROM data WHERE q=="b";
  4. SELECT * FROM data WHERE q LIKE "b";

解説

標準 SQL ではシングルクォートが文字列リテラル、ダブルクォートは識別子(列名・表名)を囲む。q="b" は「列 q と列 b を比較」と解釈され、列 b が無ければエラーになる。MySQL は既定でダブルクォートも文字列として扱うため動いてしまうが、PostgreSQL や SQLite の標準モードでは通らない。移植性のため常にシングルクォートを使う。

参考: www.postgresql.org

quotestring-literal

この問題を含む SQL のテストを制限時間つきで解く

SQLクイズへ