---
source_url: https://docs.dolphindb.cn/zh/progr/sql/coalesce.html
fetched_at: 2026-05-19T09:03:37Z
category: progr
title: coalesce
sha1: 77e2093048e2f78a6a6200ef7ed158b2c3a64394
---

# coalesce

## 语法

`coalesce(X1, X2, args...)`

## 参数

- **X1** 标量或向量。
- **X2** 与 *X1* 类型相同的标量/向量。若 *X1*
  为标量，*X2* 只能为标量；若 *X1* 为向量，*X2* 可以为非空的标量，也可以为与
  *X1* 等长的向量。
- **args** 可选参数，参数说明同 *X2*。

## 详情

根据给定的数据，填充原始数据中的空值，返回一个和原始数据等长的标量/向量。

注：

支持在分布式查询中使用。

逐一检查 X1 中的元素：

- 若非空，则直接返回。
- 若为空，则检查 X2 中相同位置的元素是否为空；若为空，则按照相同的规则检查后续 args
  中相同位置的元素是否为空，直到找到第一个非空值并返回，若找不到则返回空。

## 使用场景

- 将表的多列合并为一列。
- 替代复杂的 `case` 表达式：`select
  coalesce (expr1, expr2, 1) from t` 等效于 `select case
  when vol1 is not null then vol1 when vol2 is not null then vol2 else
  1 end from t`

## 例子

```dolphindb
coalesce(int(NULL), int(NULL), 1, 3)
1

coalesce(-1 NULL 4 3, NULL 2 NULL 1, 1 4 5 2)
[-1,2,4,3]

vol1 = [3.3, 2.2, 2.1, NULL, 1.2]
vol2 = [NULL, 1.8, 1.9, 2.3, 3.2]
sym = `a`a`b`a`c
t = table(sym, vol1, vol2)

select sym, coalesce(vol1, vol2) as vol from t
```

| sym | vol |
| --- | --- |
| a | 3.3 |
| a | 2.2 |
| b | 2.1 |
| a | 2.3 |
| c | 1.2 |
