比較の結果に基づいて異なるロジックを実行する必要がある比較のために、T-SQL でネストされた IF ELSE に代わる実行可能な方法はありますか? 私の状況では、評価の条件を表す nvarchar 値を選択し、その条件に基づいて評価が行われます。最初は、次のように CASE ステートメントでこれを実装しようとしました。
SELECT
CASE @condition
WHEN '<' THEN
IF (@processing_time < @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '<=' THEN
IF (@processing_time <= @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '>' THEN
IF (@processing_time > @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '>=' THEN
IF (@processing_time >= @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '=' THEN
IF (@processing_time = @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
END -- end case statement
ただし、他の場所で見たものと発生している構文エラーに基づいて、case ステートメントの WHEN 句は値を割り当てることしかできず、評価ロジックを実行できないようです。私が考えることができる唯一の代替手段は、ネストされた IF/ELSE ステートメントを使用して同等のロジックを実行することです。より良い方法はありますか?テーブル/データ型の再設計はオプションです。