こいつはすごい。
user_id = NULL 等とすると真偽値としては UNKNOWN になるから、 (TRUE and TRUE) -> TRUE (IS NOT FALSE) (TRUE and UNKNOWN) -> UNKNOWN (IS NOT FALSE) (FALSE and UNKNOWN) -> FALSE (FALSE and FALSE) -> FALSE
「1つでもFALSEがあればFALSEになる。すべてがTRUEまたはUNKNOWNなら FALSE ではない」という3値論理計算。
「NULLは撲滅されるべき」という主張は、テーブルの中にNULLを入れるのを避けろ、ということだと思う。 LEFT OUTER JOIN によるNULLの登場がいいのか悪いのかは今のとこ保留。
って Microsoft SQL Server では使えないじゃん! SQL99 なのか。
IS NOT FALSE に相当する処理(TRUE または UNKNOWN ならば TRUE)を、
onerecord
という中身は何でもいいので1レコードだけあるテーブルとEXISTSを使って無理やり実現してみた。
SELECT ID FROM あるテーブル WHERE NOT EXISTS (SELECT * FROM onerecord WHERE NOT (ここに条件文))
効率はともかくとしていけそう。
意味的には一度直積をとる(テーブル結合をしている)ことになってしまうので、負荷のかかる参照系で実戦投入すべきかどうかは悩ましい。 SQL2005で実行プランをとってみたがやはり何らかの結合処理は入ってしまうようだ。
みんなで見積もりを出して、最終的に当たった人に報酬ってのは面白い。
[正しい見積もりを作る]+[見積もりに合うように努力する] という行為に対するインセンティブがあるわけだな。
SSL経由のWebサイトデバッグのお供に
PHS乗り換えクーポン2万円の適用はこいつか? これを買った上にVodafoneを604SHにするのはアホなので、Vodafoneは電池とACアダプタ補充だけにすっかな。
毎度ながら大仕事だけど、1台目の手作業としては以下の2つだけで何とかなったっぽい。
portupgrade -frWw lang/perl5.8 Jcode-0.88 を野良make
よさげ。
障害チケットシステムとして 一瞬使おうかとも思ったが、ports の奴が apache22 に対応してなかったのでちょっと中断。
trac にメール取り込み機能があればよいのだが(ありそうなのだが)。
NDoc 使ってみたら2.0アセンブリは未対応とか出てきた。どうしよう。 A HotDocument for C# になるのかしら。
NDoc 1.3.1 in VisualStudio 2005(やねうらお) さんのとこに解決策がちょうど掲載された。ナイス。