オシゴトがんばりまつた。 (T T) | 踏まれたり蹴られたり...._| ̄|○

踏まれたり蹴られたり...._| ̄|○

「踏んだり蹴ったり」って....あーた、被害者なら「踏まれたり蹴られたり」ってのが正しいんぢゃない??日本語ってばむつかしい...._| ̄|○  (BTW, ついでに、人も指せない「足の親指のトナリの指」を何て呼べばしっくりくるのか、教えてヱライひとっ!!)

(関係者以外はスルーでよろ。)


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