You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简洁检测多列是否为0或NULL并生成二进制字符串?

需求与SQL优化询问

功能需求

检测多列是否包含正数,返回二进制字符串;当列值为0或NULL时对应位为0,正数则为1(示例:101表示A、C列为正数,B列为0或NULL)。

现有实现代码

SELECT
    format(
                 iif(coalesce([A], 0) > 0, 100, 0)
               + iif(coalesce([B], 0) > 0,  10, 0) 
               + iif(coalesce([C], 0) > 0,   1, 0)
              , '000'
          )

优化疑问

是否有更简洁的实现方式,比如避免使用COALESCE?


优化方案

可以直接通过IIF结合字符串拼接实现,完全无需COALESCE,逻辑更直观简洁:

SELECT
    CONCAT(
        IIF([A] > 0, '1', '0'),
        IIF([B] > 0, '1', '0'),
        IIF([C] > 0, '1', '0')
    ) AS positive_binary

方案说明

  • SQL中如果列值为NULL,[列名] > 0会返回NULL,IIF会将NULL判定为false,自动返回'0',正好匹配需求中“NULL或0对应位为0”的规则。
  • 直接拼接每一位的结果,无需通过数值计算再格式化,代码可读性更高,也避免了COALESCE的使用。

内容的提问来源于stack exchange,提问作者Przemyslaw Remin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:35:30