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







コメント 0