🔖

PostgreSQLで「カラム名」をシングルクオートで囲むとどうなるか試してみた

に公開

※自分用のメモです

カラム名にシングルクオートを使ってみた

PostgreSQLで文字列リテラルを囲むときにシングルクオート(')を使うことを前回書きました。
今回は試しに「カラム名にシングルクオートを使ったらどうなるか」を確認してみました。

クエリ例

select 'user_id' from users;

このクエリ、エラーにはなりません。
けれど、期待した結果にはなりませんでした。

実際の返り値

?column?
 user_id  
(1 row)

これは文字列の "user_id" を出力していることを意味します。
つまり、カラム名ではなく「文字列リテラル」として扱われているということになります。

カラムを参照したい場合

select user_id from users;

通常はダブルクオートなしで認識されます。

select "user_id" from users;

識別子として明示的に指定するなら、ダブルクオート(")を使います。

実際の返り値(カラム参照)

user_id
----------
00000001
(1 row)

※ 環境によっては、列の型(例:varchar)が一緒に表示されることもあります

補足

表記 意味
'user_id' 文字列リテラル
"user_id" 識別子(カラム名)
user_id 識別子(通常の書き方)

PostgreSQLのクオートの使い方は少し独特ですが、
文法の違いを知っておくことで、意図しないクエリ結果を避けることができます。

おわりに

前回の文字列リテラルに続き、
今回は 「カラム名にもシングルクオート使ってみたらどうなるか?」 を確認しました。
偶然気付いたことですが、SQLの理解を深めてくれます。
こうした小さな発見を積み重ねていくことが、力になると感じました。

Discussion