1024tips

WEBエンジニアがLinux,Mac,Rails他のTIPSをまとめます。目指せ1024TIPS!

Postgresql

PostgreSQLでNullを変換する

SQLでA-BでBという式があるとき、A=0、BがNullだった場合に0が得られないのでまずBがNullだったら0に変換する処理を考えた。PostgreSQLでNullを変換するにはNULLを別の値に置するCOALESCE関数を使う。OracleでのNVL関数にあたる。

書式:coalesce(式, 置換後の値)
例:coalesce(bill.payment,0)

参考:http://d.hatena.ne.jp/deeeki/20081212/coalesce

「undefined method `quote_ident' for PGconn:Class」エラー@Rails2.3.4+PostgreSQL環境

Rails2.3.2のアプリをRails2.3.4にした所、「undefined method `quote_ident' for PGconn:Class」という見慣れないエラーが。

http://d.hatena.ne.jp/TrinityT/20090831/1251722550 とかhttp://d.hatena.ne.jp/hs9587/20090915/1253008328 を読んだ所、文字通りPostgreSQL用のメソッドがNoMethodになっているようなので以下の記述を追加した。

■config/initializers/new_rails_defaults.rbの修正箇所
以下を冒頭に追加する。冒頭に必要なのは、ActiveRecord初期化前に必要なため。

# for Rails2.3.3 with PostgreSQL
class PGconn
  def self.quote_ident(name)
    '"' + name + '"'
  end
end

PostgreSQL8系でto_number関数がエラーになる場合

PostgreSQL8.2では動いていた関数が8.3だと動かなくなることがある。エラーメッセージは下記。
PGError: ERROR: function to_number(character varying, integer) does not exist
となっていてdoes not existということはto_number()が使えなくなったように見えるので焦る。
■原因と解決方法
引数の解釈が厳密になり関数の文字列の引数は’文字列’と明示的に囲う必要がある。postgreSQL8.3のマニュアルに型変換(キャスト)の関数の一覧がある。
http://www.postgresql.jp/document/pg837doc/html/functions-formatting.html

to_number(text, text) 文字列を数値に変換
例)to_number('12,454.8-', '99G999D9S')
  • 正:to_number('0422',’9999’)
  • 誤:to_number('0422',9999)
【改訂第3版】 SQLポケットリファレンス (POCKET REFERENCE)【改訂第3版】 SQLポケットリファレンス (POCKET REFERENCE)
著者:朝井 淳
販売元:技術評論社
発売日:2009-04-29
おすすめ度:5.0
クチコミを見る

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
著者:ミック
販売元:翔泳社
発売日:2008-02-07
おすすめ度:4.5
クチコミを見る
 

PostgreSQLの予約語

以下のドキュメントに書かれているキーワードを使用してテーブルを作ろうとすると、文法エラーになる。

ERROR: syntax error at or near "該当キーワード"

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/sql-keywords-appendix.html

PostgreSQL徹底入門 第2版PostgreSQL徹底入門 第2版
著者:浅羽 義之
販売元:翔泳社
発売日:2008-04-15
おすすめ度:2.0
クチコミを見る

改訂版 今すぐ導入!PHP×PostgreSQLで作る最強Webシステム (Gihyo Expert Books)
改訂版 今すぐ導入!PHP×PostgreSQLで作る最強Webシステム (Gihyo Expert Books)
著者:石井 達夫
販売元:技術評論社
発売日:2009-06-27
クチコミを見る

PostgreSQL、httpd他のバージョン確認方法

他人のサーバ、既存環境が動いているサーバでバージョン確認したい場合にどうぞ。

■postgreSQL
psql --version

■httpd
httpd -vでバージョン、httpd -Vでコンパイルオプション

■mysql
mysql -D mydatabase -e "select version();"

Linux高信頼サーバ構築ガイド シングルサーバ編 (Industrial Computing Series)Linux高信頼サーバ構築ガイド シングルサーバ編 (Industrial Computing Series)
著者:笠野 英松
販売元:CQ出版
発売日:2009-04
おすすめ度:5.0
クチコミを見る

LinuxサーバHacks―プロが使うテクニック&ツール100選
LinuxサーバHacks―プロが使うテクニック&ツール100選
著者:ロブ フリッケンガー
販売元:オライリージャパン
発売日:2003-11
おすすめ度:4.0
クチコミを見る

Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング
Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング
著者:Bill von Hagen
販売元:オライリー・ジャパン
発売日:2006-10-24
おすすめ度:4.0
クチコミを見る
 

訪問者数
  • 今日:
  • 昨日:
  • 累計: