お知らせ
2014年3月5日
【SQLServer】シングルクォートとアポストロフィーとエスケープ
わたくし生粋の日本人だもので、まったく思い至らなかったのですが、
画面からの文字入力時に「’(アポストロフィー)」が入っているとSQLエラーになるんですよね。
英語の入力もあり得るフィールドでやらかしてしまいました。
UPDATE xxx SET text = 'I can't Fly'
上記の場合は「t Fly’」ってなんですかってSQLServerに返されます。
メッセージ 102、レベル 15、状態 1、行 1 't' 付近に不適切な構文があります。 メッセージ 105、レベル 15、状態 1、行 1 文字列 '' の後で引用符が閉じていません。
エスケープをすれば済む話なのですが、
そこはそれエスケープひとつとっても一筋縄ではいかないのがSQLServerです。
大抵エスケープといえば「\」を使用するかと思うのですが、
ここでは「’(シングルクォート)」を使用します。
※アポストロフィーともいいます。使う文字は同じです。
つまり、
UPDATE xxx SET title = 'I can''t Fly'
これで解決です。やったね!
英語の場合は本文中にナチュラルに記号が入ってくることも頭の片隅に入れておこう…。
アルファベット26文字と数字10文字だけかと思っていたら大間違いでした恥ずかしい。