SQLでは文字列リテラルとしてシングルクォート(「'」)を利用します。そのため文字列中に何も考えずシングルクォートを混ぜていると、RDBMSが文字としてのシングルクォートと文字列リテラルとしてのシングルクォートを区別できず、エラーになります。
- これはエラーになる
update tbl set msg = '彼女は'HELLO'といいました' where id = 100
__要するにSQLでは文字としてのシングルクォートをエスケープする必要があるということです。__特殊文字のエスケープというとバックスラッシュ(「\」)がよく利用されるイメージがありますが、__SQLにおいてはシングルクォートをエスケープする場合はシングルクォートを2回重ねます。__たとえば上述の例では次のように書くと正常に動作します。
- これは正常に動く。
update tbl set msg = '彼女は''HELLO''といいました' where id = 100
CSVではフィールド内のダブルクオート(「"」)をエスケープする際「""」に変換します。これにちょっと近いかしら(´・ω・`)