前提・実現したいこと
SQL Serverについて勉強しています。
用意されたSQLの例文を見ながら、自分でも実行してみたりして動きを見ているのですが、
今日初めてIIFという倫理関数を見ました。
このIIFは「式、式が真の場合、式が偽の場合」という書き方をして、真偽どちらかを返すというCASE句のようなものだと思っています。
検索ブラウザなどで「SQL IIF」で検索すると
SQL ServerのIIF 値を評価する
上記リンク先のようなものがヒットして、なるほどと一度納得したのですが、
今日見たIIFの例文ではCASE句と一緒に使われており、2番目のクエリではダメな理由はなんでしょうか。
SQL
1SELECT 2CASE WHEN B.Id IS NULL THEN 3 IIF (COALESCE(A.PostCode,'') = '','',A.PostCode) + A.Address1 + A.Address2) 4ELSE 5 IIF (COALESCE(B.PostCode,'') = '','',B.PostCode) + B.Address1 + B.Address2) 6END ADDRESS_CODE 7FROM ADDRESS_1 A 8LEFT JOIN ADDRESS_2 B 9ON B.Id = A.Id
上記クエリに対して、下記のクエリでもエラーなく実行できたのですが、
上記のクエリがIIFを用いている理由がよくわからなかったためご質問させていただきます。
SQL
1CASE WHEN B.Id IS NULL THEN 2(CASE WHEN COALESCE(A.PostCode,'') = '' THEN '' ELSE A.PostCode) END ) + A.Address1 + A.Address2 3ELSE 4(CASE WHEN COALESCE(B.PostCode,'') = '' THEN '' ELSE B.PostCode) END ) + B.Address1 + B.Address2 5END ADDRES_CODE
単なる記述者の好みで、特にどちらであってもクエリの実行速度や不具合を起こしやすいわけではない、のでしょうか。
書き方の好みだけということでしたらくだらない質問をしてしまって申し訳ないです。
補足情報(FW/ツールのバージョンなど)
SQL Server 2014
回答2件
あなたの回答
tips
プレビュー