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

如何仅当两列均非空时拼接两列且以/作为分隔符

双列条件拼接SQL实现方案

你当前使用的嵌套CONCAT写法没有做非空判断,会在某列为NULL时保留多余的/分隔符,可根据你使用的数据库类型选择以下实现方案:

  • 通用方案(适配支持CONCAT_WS的数据库,如MySQL、PostgreSQL、Hive、Spark SQL等)
    直接使用系统自带的CONCAT_WS函数即可,该函数会自动跳过NULL值的字段,仅在非空字段之间插入分隔符:
SELECT CONCAT_WS('/', purpose, priority) AS 拼接结果 FROM 表名;

该写法不需要额外加非空判断,执行效率更高,完全符合你要的输出效果

  • 兼容低版本数据库方案(适配不支持CONCAT_WS的数据库,如老版本Oracle、SQL Server)
    通过CASE WHEN显式做非空条件判断实现:
SELECT
  CASE
    WHEN purpose IS NOT NULL AND priority IS NOT NULL THEN CONCAT(purpose, '/', priority)
    WHEN purpose IS NOT NULL THEN purpose
    ELSE priority
  END AS 拼接结果
FROM 表名;
  • Oracle专属简化写法
    可以用NVL2函数简化判断逻辑:
SELECT NVL2(purpose, NVL2(priority, purpose||'/'||priority, purpose), priority) AS 拼接结果 FROM 表名;

内容的提问来源于stack exchange,提问作者Gurudiksha Dhingra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:21:03