文字列リテラル

広告

MySQLにおいて文字列リテラルを記述する場合のルールについて確認していきます。

文字列型のカラムに追加する阿多を記述する場合など文字列を記述する場合はシングルクオーテーション(')またはダブルクオーテーショ(")で囲んで記述します。

'文字列'
"文字列"

どちらを使っても構いませんが、比較的シングルクオーテーションを使われているケースが多いように思います。

mysql> select 'Hello', "Hello";

p1-1

エスケープ処理

キーボードから入力できない文字を文字列の中で表したい場合や、特別な意味を持つ文字を入力したい場合にはエスケープ処理が必要です。次のような種類があります。

¥0    ASCII 0(NUL)文字
¥'    単一引用符 (')文字
¥"    二重引用符(")文字
¥b    バックスペース文字
¥n    改行文字(LF)
¥r    復帰改行文字
¥t    タブ文字
¥Z    ASCII 26 (Control-Z)
¥¥    '¥'文字そのもの
¥%    '%' 文字
¥_    '_' 文字

※「¥%」と「¥_」はLIKE式の中でワイルドカードとして使われる文字のため、LIKE式に対するパターン文字列の中でのみエスケープ処理が必要です。

改行文字やタブなどを文字列の中に含める場合には'¥n'や'¥t'を文字列の中に記述して下さい。

mysql> select 'hello¥nbye';

p1-2

文字列をシングルクオーテーションで囲った場合に、文字列の中でシングルクオーテーションを使用したい場合にエスケープ処理を行って下さい。同じようにダブルクオーテーションで囲った場合に、文字列の中でダブルクオーテーションを使用したい場合もエスケープ処理を行って下さい。

mysql> select 'Book¥'s title', "mysql is ¥"relational¥" db";

p1-3

なおこの場合は「¥'」の代わりに「''」、「¥"」の代わりに「""」と使用することもできます。

mysql> select 'Book''s title', "mysql is ""relational"" db";

p1-4

文字列をシングルクオーテーションで囲った場合に、文字列の中でダブルクオーテーションを使用したい場合やその逆の場合にはエスケープ処理は必要ありません。

mysql> select "Book's title", 'mysql is "relational" db';

p1-5

( Written by Tatsuo Ikura )