ふと思ったSQLの話

ふと思ったSQLの話


IF @asdf IS NULL
BEGIN
-- @asdfがNULLだった場合にこういう処理をするよ!
END

↑これが基本形でしょう。しかしだな。

@asdf = SELECT NVL(MAX(NOTNULL_COLUMN), 0) FROM TABLE1
IF @asdf IS NULL
BEGIN
-- 絶対ないが、@asdfがNULLだった場合はエラーを投げようか
END

っていうコードをたまに見るのです。
そもそもそういうコードが存在すること自体無駄ですが、それは置いといて。
SQLのベースは英語だから

@asdf = SELECT NVL(MAX(NOTNULL_COLUMN), 0) FROM TABLE1
IF @asdf WERE NULL
BEGIN
-- 絶対ないが、@asdfがNULLだった場合はエラーを投げようか
END

と「絶対ないとプログラマが認識してる場合」にIS NULLのエイリアスとしてWERE NULL使えたらなんか使い道あるのかなと思いました。

その2


こんな書き方もあったら楽しいかもしれない。
こっちは仮に実装することになったらDB業者が悲鳴上げそう。

UPDATE TABLE1 SET TABLE1.COLUMN2=TABLE2.COLUMN2 FROM TABLE2 WHERE TABLE1.COLUMN2 IS NULL
UPDATE TABLE1 SET TABLE1.COLUMN3=TABLE3.COLUMN3 FROM TABLE3 WHERE TABLE1.COLUMN2 WAS NULL