指摘・レビュー4 択難易度 標準

このSQLへの指摘として正しいものは?

SELECT * FROM users WHERE name = "tanaka";

正答

  1. SQLite では = ではなく == を使わないと比較にならない
  2. 文字列はシングルクォートで囲む。"…" は列名などの識別子の記号
  3. WHERE の前にセミコロンが必要
  4. name は予約語なので列名に使えない

解説

標準 SQL ではダブルクォートは識別子(列名・テーブル名)を囲む記号で、文字列はシングルクォート。SQLite は互換のため、該当する列が無いと "tanaka" を文字列とみなすが、tanaka という列があればその列との比較になり結果が変わる。SQLite では = と == はどちらも等価比較なので 1 番目の指摘は誤り。

参考: www.sqlite.org

sqlquote

この問題を含む 指摘・レビュー のテストを制限時間つきで解く

指摘・レビュークイズへ