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

SQL如何实现c为空取b值、c非空取c值的条件查询

SQL实现方案

你可以通过以下两类写法实现需求,均能返回符合规则的结果:

  • 通用标准SQL写法(兼容所有支持ANSI SQL的数据库,逻辑直观)
    用CASE表达式做条件判断,直接匹配取值规则:
    SELECT
      a,
      CASE WHEN c IS NULL THEN b ELSE c END AS col2
    FROM tbl;
    
  • 简洁函数写法
    用数据库内置的空值处理函数实现,代码更短:
    • 优先选标准SQL的COALESCE函数,MySQL、PostgreSQL、SQLite、SQL Server、Oracle 12c+等主流数据库均支持,作用是返回传入参数中第一个非NULL值,完全匹配需求逻辑:
      SELECT a, COALESCE(c, b) AS col2 FROM tbl;
      
    • 部分数据库的专属空值函数也可实现:
      • Oracle旧版本可使用NVL(c, b)替代COALESCE(c, b)
      • SQL Server可使用ISNULL(c, b)替代COALESCE(c, b)

注意:不要搞反COALESCE/NVL/ISNULL里的参数顺序,必须把允许为NULL的c列放在第一个参数位置,b列放在第二个参数位置,才能得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:57:16