次のコードは 'First' と 'Second' の INSERT を出力するので、最初に満たされた条件が常に実行されると結論付けることができますか?
DECLARE @Constant1 int = 1
DECLARE @Constant2 int = 2
select
case
when @Constant1 = 1
then 'First'
when @Constant1 = 1 and @Constant2 = 2
then 'Second'
end as Result
select
case
when @Constant1 = 1 and @Constant2 = 2
then 'Second'
when @Constant1 = 1
then 'First'
end as Result
並列処理が結果に影響を与える場合があることを知っており、本番環境で見られるこのタイプの状況が常に同じ結果を返すかどうかを理解しようとしていました。
この質問は、製品コードに潜在的な問題があるかどうかを理解することを目的としています。もし私がコードを新たに書くつもりなら、コードを明示的に相互に排他的にしようとするだろう..
select
case
when @Constant1 = 1 and @Constant2 != 2
then 'First'
when @Constant1 = 1 and @Constant2 = 2
then 'Second'
end as Result