次の SQL は標準 SQL として誤りがある。正しく直したものは?
SELECT * FROM data WHERE q="b";正答
- SELECT * FROM data WHERE q=b;
- SELECT * FROM data WHERE q='b';
- SELECT * FROM data WHERE q=="b";
- SELECT * FROM data WHERE q LIKE "b";
解説
標準 SQL ではシングルクォートが文字列リテラル、ダブルクォートは識別子(列名・表名)を囲む。q="b" は「列 q と列 b を比較」と解釈され、列 b が無ければエラーになる。MySQL は既定でダブルクォートも文字列として扱うため動いてしまうが、PostgreSQL や SQLite の標準モードでは通らない。移植性のため常にシングルクォートを使う。
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ