🔖
PostgreSQLにおけるクオートの使い分け
普段はMySQLを使っていることが多いのですが、
PostgreSQLを触る機会があり、クエリの書き方でつまずいてしまいました。
些細なことですが、自分用のメモも兼ねて残しておきます。
エラーとなったクエリ
以下のようなクエリを実行したところ、エラーが発生しました。
select * from users where user_id = "00000001";
MySQLではこのような記述でも問題なく実行されますが、
PostgreSQLでは、文字列リテラルにダブルクオート("
)を使うことはできません。
正しいクエリの書き方
select * from users where user_id = '00000001';
PostgreSQLでは、文字列リテラルはシングルクオート('
)で囲む必要があります。
補足:PostgreSQLにおけるクオートの使い分け
- ダブルクオート(
"
):識別子(カラム名やテーブル名など)を囲む - シングルクオート(
'
):文字列リテラルを囲む
おわりに
MySQLに慣れていると、PostgreSQLの文法に戸惑うことがあります。
ちょっとした記述の違いではありますが、クエリが通らず手が止まる原因にもなるので、覚えておきたいポイントの一つです。
Discussion