SQLのエスケープ処理 検索文字列のエスケープ 使用DBMS:MySQL where句などで、シングルクオートを指定したいときのエスケープ。 たとえば「The Tom’s house」のように所有の「s」の前のアポストロフィーなど。 MySQLの ドキュメント からエスケープする方法は以下のようなものがあります。 「’’」と記述する SELECT * FROM post p WHERE p.title = 'Tom''s house'; バッククォート「」を直前に書く SELECT * FROM post p WHERE p.title = 'Tom\'s house'; 文字列を「“」で囲む SELECT * FROM post p WHERE p.title = "Tom's house"; カラムにハイフンが含まれるとき 多分、そもそもカラム名やテーブル名にハイフンを含めないのが望ましいと思いますが、ハイフンを含まざるをえない時、以下のようなSQLを投げたらエラーが発生しました。 ALTER TABLE post ADD post-white-list VARCHAR(255); エラーメッセージ [42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘post-white-list’… カラム名をダブルクオートで囲ってみる ALTER TABLE post ADD "post-white-list" VARCHAR(255); 同じエラーが出る。。 解:バッククオートで囲む 以下のようにバッククオートで囲んだら実行できました。 ALTER TABLE post ADD `post-white-list` VARCHAR(255); バッククオートは予約語をエスケープするものだと思っていて、あまり使う機会がなかったのですが、このような時も使えるんです...
揮発性の記憶力を補うためにプラグラミングのTipsやメモなどを残していきます。