(関係者以外はスルーでよろ。)
DB2 ってさー。
テーブル 1 の Char フィールド A と
テーブル 2 の同タイプ同レングスのフィールド A を比較した時、例えば
1.A = 'Sandy' と
2.A = (null) を比較した時
【where 1.A <> 2.A】 条件で引っかからないって知ってた?
もちろん
1.A = 'Sandy' と
2.A = 'sandy' を比較した時には一文字違いでちゃんと
【where 1.A <> 2.A】 条件で引っかるんだよ。
なのに、入力値があるフィールドと NULL 値のフィールドはこの条件じゃ比較できないの。
(ここを解明したり、「TIMESTAMP 型」 で現在時刻をアップデートするのに 3 時間も残業したさ。 (号泣)
データ補正の SQL を組まなくちゃならないようなシステム上げてくる (呆) ヤツらが根本的には悪いのだけど、
勉強になったからヨシとする。
しかし、マニュアルねーし、ネットに載ってるのは、Oracle とかばっかだし、この件は結局見つからなかったし....
疲れ果てた結果、渋谷某所で現在足ツボマッサージちうのみぃみ。だす。 うす。うすうす。)
とにかく、結論としては
NULL 値フィールドとの値を比較する SQL は
予想外の結果になるかもよ、と。
【where 1.A <> 2.A or
( (1.A <> '' and 2.A is null) or (1.A is null and 2.A <> '') )】
あたりの条件をかまさないとダメみたい (涙) だぞ、と。
(データ補正の今回、テーブル 1 とテーブル 2 は両方 NULL か、両方値アリか、だったから、アタシはもっと
単純な条件かましたけどね。)
TIMESTAMP 型に現在時刻取得する SQL は明日にでも追記するーっっ!!
ほーっほっほ。 こりでも一応 「流しの」 技術屋のみぃみ。さんでつ。
(来月も 15 日に出発して、24 日に日本に戻ってくる予定だったり。 これがしたいから個人事業主してたり。 ww)
んだば、いってみよーっっ!!!!
【現タイムスタンプ・現日付・現時刻の取得方法】
● select CURRENT TIMESTAMP from SYSIBM.SYSDUMMY1
● select CURRENT DATE from SYSIBM.SYSDUMMY1
(select date(CURRENT TIMESTAMP) from SYSIBM.SYSDUMMY1、も同じらしい。)
● select CURRENT TIME from SYSIBM.SYSDUMMY1
(select time(CURRENT TIMESTAMP) from SYSIBM.SYSDUMMY1、も同じらしい。)
★ year(C.T.) / month(C.T.) / day(C.T.) / hour(C.T.) / minte(C.T.) / second(C.T.) / microsecond(C.T.)
と、CURRENT TIMESTAMP (上記は C.T. で表記) は、その他イロイロ使えるらしい。
※ とりあえず読めばいいさ。 (先にヒットしたのが英サイトだったけど、日サイトもあったからリンクしとくね。)
DB2 の基礎: 日付と時刻で遊ぶ
⇒ http://www-06.ibm.com/jp/software/data/developer/library/techdoc/daytime.html
DB2 Basics: Fun with Dates and Times
⇒ http://www.ibm.com/developerworks/db2/library/techarticle/0211yip/0211yip3.html