So-net無料ブログ作成
検索選択

NULL値を 0 として合計を出したり、日付→文字列変換したり [RDBMS]

合計を出そうと

SELECT SUM(bar) FROM foo


とすると、bar に NULL が含まれてると具合がよろしくない。
SQLServer だと、こんな感じ↓で、NULL の場合は 0 として合計が出せた。

SELECT SUM(IsNull(bar, 0)) FROM foo


IsNull(bar, 0) のところが Oracle だと NVL(bar, 0) PostgreSQL/Firebird だと COALESCE(bar, 0) ってすればいいみたい。

ついでに発見したので、日付と文字の変換についてもメモしておく
【日付型→文字列型変換】
[SQLServer] CONVERT(varchar, d,112)
[Oracle] TO_CHAR(d, 'YYYYMMDD')
【文字列型→日付型】
[SQLServer] CONVERT (datetime,'2006/09/29 10:20:30',120)
[Oracle] TO_DATE('2006/09/29 10:20:30','yyyy/mm/dd hh24:mi:ss')

PostgreSQL はこれ↓
http://www.postgresql.jp/document/pg814doc/html/functions-formatting.html
Firebird はこれ↓
http://firebird.skr.jp/?%C1%C8%B9%FE%A4%DF%B4%D8%BF%F4%B0%EC%CD%F7#cast

SQLServer の CONVERT 関数の最後のパラメータの 112 とか 120 ってこれ↓みたい。
http://www.microsoft.com/japan/msdn/sqlserver/sql2000/intlfeaturesinsqlserver2000.aspx


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。