名前が Alice の行を取りたい。正しく直したものは?
SELECT id FROM users WHERE name = Alice;正答
- SELECT id FROM users WHERE name = "Alice";
- SELECT id FROM users WHERE name = 'alice';
- SELECT id FROM users WHERE name = (Alice);
- SELECT id FROM users WHERE name = 'Alice';
解説
引用符の無い Alice は列名と解釈され、そんな列は無いのでエラーになる。文字列リテラルはシングルクォートで囲む。選択肢 1 のダブルクォートは標準 SQL では識別子(列名)を囲む記号で、文字列には使わない。選択肢 2 の 'alice' は引用符は正しいが、= の比較は大文字小文字を区別するため Alice とは一致しない。括弧で囲んでも列名扱いは変わらない。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ