pgsql coalesce函数
1. 介绍
在 PostgreSQL 中,COALESCE
函数是一个非常有用的函数。它用于返回一个参数列表中的第一个非空参数。如果所有参数都为空,则返回空值。
COALESCE
函数的语法如下所示:
COALESCE(expression1, expression2, ...)
其中,expression1, expression2, ...
是一个或多个表达式,可以是列名、常量或者函数的返回值。
2. 使用示例
下面是一些使用 COALESCE
函数的示例。
示例1:
SELECT COALESCE(NULL, 42);
运行结果:
coalesce
-----------
42
(1 row)
在这个示例中,NULL
是第一个参数,42
是第二个参数。由于第一个参数为空,所以返回了第二个参数的值。
示例2:
SELECT COALESCE(NULL, NULL, 'Hello');
运行结果:
coalesce
----------
Hello
(1 row)
在这个示例中,NULL
是第一个和第二个参数,'Hello'
是第三个参数。由于前两个参数都为空,所以返回了第三个参数的值。
示例3:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR,
age INTEGER,
city VARCHAR
);
INSERT INTO students (name, age, city) VALUES ('Alice', NULL, 'New York');
INSERT INTO students (name, age, city) VALUES ('Bob', 25, NULL);
SELECT name, COALESCE(age, 0), COALESCE(city, 'Unknown') FROM students;
运行结果:
name | coalesce | coalesce
-------+----------+-------------
Alice | 0 | New York
Bob | 25 | Unknown
在这个示例中,COALESCE
函数用于处理 NULL 值。当 age
列或 city
列的值为空时,分别返回了默认值 0 和 ‘Unknown’。
3. CASE 表达式 VS COALESCE 函数
在 PostgreSQL 中,除了 COALESCE
函数外,还有一种处理 NULL 值的方法,即使用 CASE
表达式。
下面是一个使用 CASE
表达式的示例:
SELECT name,
CASE
WHEN age IS NULL THEN 0
ELSE age
END,
CASE
WHEN city IS NULL THEN 'Unknown'
ELSE city
END
FROM students;
使用 CASE
表达式可以实现跟 COALESCE
函数一样的功能。然而,COALESCE
函数更简洁,代码更易读。
4. 总结
COALESCE
函数是非常有用的,它可以用于处理 NULL 值。当对多个参数逐一进行处理时,使用 COALESCE
函数比 CASE
表达式更加简洁、清晰。它是 PostgreSQL 中处理 NULL 值的一个重要工具。