"SELECT 'Hello, world!'": MySQLで文字列リテラルを囲む3つの方法
MySQLで一重引用符、二重引用符、およびバッククォートを使用するタイミング
一重引用符 (')
- 最も一般的な区切り文字です。
- 文字列リテラル内のすべての文字をそのまま解釈します。
- 特殊文字のエスケープ処理は必要ありません。
- 例:
SELECT 'Hello, world!'
- 以下の場合に使用されます。
- 文字列リテラル内に一重引用符を含める場合
- 特殊文字をエスケープ処理したい場合
- 例:
SELECT CONCAT('Hello, ', @name)
SELECT "This is a \n newline"
バッククォート (`)
- 以下の場合に使用されます。
- 識別子(テーブル名、列名、関数名など)が予約語と一致する場合
- 識別子に特殊文字を含める場合
- 大文字と小文字を区別したい場合
- 例:
SELECT * FROM
userWHERE
name= 'John'
SELECT
date-timeFROM
my-table`SELECT COUNT(*) FROM
OrdersWHERE
Status= 'Shipped'
- 二重引用符は、一重引用符を含めたり、変数を含めたり、特殊文字をエスケープ処理したい場合に使用されます。
- バッククォートは、識別子が予約語と一致する場合や、特殊文字を含めたり、大文字と小文字を区別したい場合に使用されます。
補足
- 上記の説明は基本的なものです。詳細はMySQLの公式ドキュメントを参照してください。
- 識別子にバッククォートを使用する場合は、一貫性のためにすべての識別子にバッククォートを使用することをお勧めします。
-- 一重引用符
SELECT 'Hello, world!'
-- 二重引用符
SELECT "He said, 'Hello, world!'"
-- 変数を含む二重引用符
SET @name = 'John Doe';
SELECT CONCAT('Hello, ', @name);
-- 特殊文字をエスケープ処理した二重引用符
SELECT "This is a \n newline";
-- 予約語と一致する識別子(バッククォートを使用)
SELECT * FROM `user` WHERE `name` = 'John';
-- 特殊文字を含む識別子(バッククォートを使用)
SELECT `date-time` FROM `my-table`;
-- 大文字と小文字を区別する識別子(バッククォートを使用)
SELECT COUNT(*) FROM `Orders` WHERE `Status` = 'Shipped';
このコードを実行すると、以下の出力が得られます。
Hello, world!
He said, 'Hello, world!'
Hello, John Doe
This is a
newline
John
2024-03-25 00:46:06
1
注意
上記のコードは、MySQL 8.0 で実行することを想定しています。他のバージョンの MySQL を使用している場合は、構文が異なる場合があります。
MySQLで文字列リテラルを囲むその他の方法
連結演算子 (+) を使用
- 複数の文字列リテラルを連結する場合に使用できます。
- 例:
SELECT 'Hello, ' + @name + '!'
X'...' ヘックスリテラルを使用
- バイナリデータを格納する場合に使用できます。
- 例:
SELECT X'48656C6C6F2C20776F726C6421'
- 例:
SELECT N'こんにちは、世界!'
上記の方法を使用する場合は、それぞれの方法の構文と注意事項をよく理解する必要があります。
X
mysql sql quotes