🔖

PostgreSQLにおけるクオートの使い分け

に公開

普段はMySQLを使っていることが多いのですが、
PostgreSQLを触る機会があり、クエリの書き方でつまずいてしまいました。

些細なことですが、自分用のメモも兼ねて残しておきます。

エラーとなったクエリ

以下のようなクエリを実行したところ、エラーが発生しました。

select * from users where user_id = "00000001";

MySQLではこのような記述でも問題なく実行されますが、
PostgreSQLでは、文字列リテラルにダブルクオート(")を使うことはできません。

正しいクエリの書き方

select * from users where user_id = '00000001';

PostgreSQLでは、文字列リテラルはシングルクオート(')で囲む必要があります。

補足:PostgreSQLにおけるクオートの使い分け

  • ダブルクオート("):識別子(カラム名やテーブル名など)を囲む
  • シングルクオート('):文字列リテラルを囲む

おわりに

MySQLに慣れていると、PostgreSQLの文法に戸惑うことがあります。
ちょっとした記述の違いではありますが、クエリが通らず手が止まる原因にもなるので、覚えておきたいポイントの一つです。

Discussion