IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

PostgreSQL で文字列に "" を使うとエラーになる

以下の SQL 文なら、文字列にシングルクォーテーションを使っているので OK:

f:id:matt-note:20180921211933p:plain

 

文字列にダブルクォーテーションを使うとエラーになる:

f:id:matt-note:20180921212049p:plain

f:id:matt-note:20180921212127p:plain

 

PostgreSQLなどの標準SQLでは、

  • シングルクォーテーションで囲う:文字列定数として扱う

  • ダブルクォーテーションで囲う:カラム名として扱う

という仕様になっている

なお、MySQL だけは、"" でも文字列として使えるとのこと。

 

では、O'REILLY さんのように名前にシングルクォーテーションが入っている場合のエスケープは・・・

以下のように、シングルクォーテーションを2回重ねれば OK とのこと:

f:id:matt-note:20180921213040p:plain

f:id:matt-note:20180921213048p:plain

O\'REILL のように、バックスラッシュをしてもエスケープにならず、エラーになる。

 

参考:

PostgreSQLでの「”」と「’」の違い

SQLでは「'」をエスケープする際に「''」を使う