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

PostgreSQL:如何查询单条记录的唯一非空字段值

单条记录唯一非空值的SQL查询方案

场景说明

现有数据表结构及数据如下:

IdStringNumericDate
1null1006null
2Testing valuenullnull
3nullnull1-1-2023

其中Id为主键,每条记录仅在String、Numeric、Date三列中的某一列有值,其余均为null。需求是查询指定Id对应的唯一非空字段值。

你之前尝试的SELECT String OR Numeric OR Date ...写法错误,因为OR是逻辑运算符,无法实现合并非空值的需求。

正确解决方案

使用ANSI标准SQL的COALESCE函数,它会返回参数列表中第一个非空的值,完全匹配你的场景:

SELECT COALESCE(String, Numeric, Date) AS non_null_value
FROM `Table` t 
WHERE id = '2';
  • 该语句会直接返回指定Id对应的唯一非空值,通过AS non_null_value可以给结果列设置清晰的别名。
  • 兼容性:COALESCE支持MySQL、PostgreSQL、SQL Server、Oracle等绝大多数主流数据库。
  • 若使用不支持COALESCE的旧版数据库(如Access),可以用嵌套的ISNULL:
SELECT ISNULL(String, ISNULL(Numeric, Date)) AS non_null_value
FROM `Table` t 
WHERE id = '2';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:20:36