sql - 使用多个 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
这是最好的方法吗?还是我可以做得更好?
解决方案
您可以在一个语句中完成所有逻辑:
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)
推荐阅读
- image - Bootstrap 5:模态中的全屏轮播,以各种尺寸的图像为中心
- database - DynamoDB 按需扩展和节流
- angular - 单击重置按钮时表单无效
- flutter - 使用 Draggable Widget - Flutter 时,如何让子小部件动画回到其原始位置?
- linux - bash:彩色输出不会停止
- libvirt - openstack使用指定的xml文件创建实例
- javascript - 如何使用 GoJs addArrayItem 或 insertArrayItem
- javascript - 如何在猫鼬中填充嵌套数组的嵌套数组文档
- javascript - 根据父级别和嵌套级别对对象的嵌套数组进行排序
- java - 如何随机更新二维数组中的选定元素?