LoginSignup
28
21

More than 1 year has passed since last update.

DBごとのSQLのクォーテーションを整理したった

Last updated at Posted at 2020-01-23

データベースのクォーテーション、使い方まちまち。
まとめた。

'シングル' "ダブル" `バック` [大カッコ] 備考
MySQL 文字列定数 文字列定数 引用識別子 (なし) 引用識別子はUNIX系では大文字小文字を区別1
MySQL
ANSI_QUOTES モード
文字列定数 引用識別子 引用識別子 (なし)
PostgreSQL 文字列定数 引用識別子 (なし) (なし) 引用識別子では大文字小文字を区別
Oracle 文字列定数 引用識別子 (なし) (なし) 引用識別子では大文字小文字を区別
SQLite 文字列定数 引用識別子 引用識別子 引用識別子
Microsoft SQL Server
(Transact-SQL)
文字列定数 引用識別子 (なし) 引用識別子 QUOTED_IDENTIFIER が ON (既定値) の場合

こうみると、MySQLが異端児ってのがよくわかる。

引用識別子は識別子の1つ。識別子はテーブル名やカラム名など、データベース中のオブジェクトを表す文字列だが、決まった引用符(クォーテーションマーク)で囲むことで、空白や予約語などの特別な文字列を用いることができる(エスケープできる)のが引用識別子である。
ただ、そんな特別な文字列を使ったテーブル名やカラム名は、混乱の元なので、使わないほうがよいだろうね。

また表中にも書いたように引用識別子は大文字小文字を(大抵の場合は)区別する。フレームワークのORマッパでは、テーブルやカラムなどを自動的に引用識別子で定義する場合がある。都合悪くなることはまずないのでこれに従っておこう。

  • 文字列は 'シングルクォーテーション' で囲む。
  • 引用識別子はフレームワークに従い、命名規則のルールを統一。

が良さげ。

28
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
21