私はよくグーグルで検索しましたが、私の質問に対する理解できる答えが見つかりませんでした。クエリで COALESCE 関数を使用する必要があるのはいつですか。ご回答ありがとうございます。
1 に答える
「列」の最初の非 NULL 値が必要な場合 (この意味での列は、テーブルではなくクエリ出力を意味します)。
一例として、会社の担当者が挙げられます。3 つの列があるとします。
CompanyRep
CompanySecretary
CompanyOwner
3つすべてを保存したいとします。ただし、誰に連絡する必要があるかを知るためのクエリでは、指定された順序でそれらの 1 つを配信する必要があります。ただし、それらの一部またはすべてが NULL である可能性があります。
クエリ:
select coalesce (CompanyRep, CompanySecretary, CompanyOwner, '???') as contact
from blah blah blah
あなたが望む価値を提供します。NULL ではない最初の値が返されます。可能なすべてのテーブル列が NULL の場合、それは'???'
明らかにNULL ではないため、取得されます。
別の例として、借方と貸方の値に別々の列を持つ会計データベースがあるとします。これは通常、設計が不適切であり、1 つの列に符号を付ける必要があることを気にしないでください。会計にあまり詳しくない人によって設定されたと仮定しましょう。私よりも知識:-)
したがって、すべてのトランザクションを合計して貸方と借方が等しくなるようにしたい場合は、次のようなものを使用できます。
select sum (coalesce (credit, -debit, 0)) from txns ...
そうすれば、NULL でない場合は貸方の値が選択され、それ以外の場合は借方の値の否定が選択されます (すべての値は正です)。両方が NULL の場合、ゼロになります。
両方とも非 NULL の場合はどうなりますか? まあ、それが悪いデザインである理由です:-)