首页 > 解决方案 > 使用多个 IF 条件设置变量

问题描述

我收到存储过程的参数:

          @BDOnly                       BIT
        , @CDOnly                       BIT
        , @PPOOnly                      BIT
        , @FBOMOnly                     BIT 

然后根据这些变量,我做一个 IF 条件来设置其他变量,例如:

  DECLARE @IsBDChecked   VARCHAR(10)
        , @IsCDChecked   VARCHAR(10)
        , @IsPPOChecked  VARCHAR(10)
        , @IsFBOMChecked VARCHAR(10)

    IF(@BDOnly = 1)
    BEGIN
       SET @IsBDChecked = 'Test1'
    END
    IF(@CDOnly = 1)
    BEGIN
       SET @IsCDChecked = 'Test2'
    END
    IF(@PPOOnly = 1)
    BEGIN
       SET @IsPPOChecked = 'Test3'
    END
    IF(@FBOMOnly = 1)
    BEGIN
       SET @IsFBOMChecked = 'Test4'
    END

这是最好的方法吗?还是我可以做得更好?

标签: sqlsql-servertsql

解决方案


您可以在一个语句中完成所有逻辑:

SELECT @IsBDChecked = (CASE WHEN @IsBDChecked = 1 THEN 'Test1' END),
       @IsCDChecked = (CASE WHEN @IsCDChecked = 1 THEN 'Test2' END),
       @IsPPChecked = (CASE WHEN @IsPPOChecked = 1 THEN 'Test3' END),
       @IsFBOMChecked = (CASE WHEN @IsFBOMChecked = 1 THEN 'Test4' END)

推荐阅读