PostgreSQL で大文字を含む列名や表名を扱う SQL
某管理システムで使っているデータベースのメンテナンス作業中だけど、一般的に PostgreSQL では半角英数の小文字やアンダースコアのみで列や表の名前を付ける。
MySQL か何かから移行のときにそれを忘れてて、大文字が混じったままの列名がたくさんあって、UPDATE できなくて焦ったのでメモ。
そういうときは、列名や表名にダブルクォーテーション (") をつけておけばよい。
一方、イコールの右辺 (値) には、シングルクオーテーション (') を付ける。
具体的には、以下のようにすればよい。
SELECT * FROM user order BY "idNo"; SELECT * FROM item where "itemId">=2000 ORDER BY "itemNo"; INSERT INTO subjects VALUES (5,'タイトル')); UPDATE subjects SET "subName"='件名' WHERE "subNo"=5;
PHP だとこんな感じ。
$query = "SELECT * FROM user order BY \"idNo\";"; $query = "SELECT * FROM item where \"itemId\">=2000 ORDER BY \"itemNo\";"; $query = "INSERT INTO subjects VALUES (5,'タイトル'));"; $query = "UPDATE subjects SET \"subName\"='件名' WHERE \"subNo\"=5;";
よく考えたら 3 番目のはあまり関係ないな。
トラックバック
このエントリーのトラックバックURL:
http://thira.plavox.info/cgi-bin/mt5/mt-tb.cgi/105

