PostgreSQL的有一個NULLIF函數來處理空值。這個NULLIF函數是PostgreSQL提供的最常見的條件表達式之一。
用法:NULLIF(argument_1,argument_2);
這個NULLIF如果函數返回空值參數_1等於參數_2,否則返回參數_1。
例:
首先,我們創建a 表名為帖子如下:
CREATE TABLE posts ( id serial primary key, title VARCHAR (255) NOT NULL, excerpt VARCHAR (150), body TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP );
現在,我們將一些示例數據插入表中,如下所示:
INSERT INTO posts (title, excerpt, body) VALUES ('test post 1','test post excerpt 1','test post body 1'), ('test post 2','','test post body 2'), ('test post 3', null ,'test post body 3');
我們的目的用於顯示帖子概述頁麵,該頁麵顯示的每個標題和摘錄發布。如果未提供摘錄,我們將使用帖子正文的前40個字符。我們可以簡單地使用以下查詢來獲取帖子表。
SELECT ID, title, excerpt FROM posts;
這導致以下結果:
這個摘錄欄中的空值。要替換此空值,我們可以使用COALESCE函數如下:
SELECT id, title, COALESCE (excerpt, LEFT(body, 40)) FROM posts;
這將導致以下結果:
不幸的是,有a 摘錄欄中的空值和”(空)之間混合。這就是為什麽我們需要使用NULLIF函數:
SELECT
id,
title,
COALESCE (
NULLIF (excerpt, ''),
LEFT (body, 40)
)
FROM
posts;
輸出:
相關用法
- PostgreSQL ARRAY_AGG()用法及代碼示例
- PostgreSQL AVG()用法及代碼示例
- PostgreSQL COUNT()用法及代碼示例
- PostgreSQL STRING_AGG()用法及代碼示例
- PostgreSQL MAX()用法及代碼示例
- PostgreSQL MIN()用法及代碼示例
- PostgreSQL SUM()用法及代碼示例
- PostgreSQL DENSE_RANK用法及代碼示例
- PostgreSQL Drop用法及代碼示例
- PostgreSQL FIRST_VALUE用法及代碼示例
- PostgreSQL LAST_VALUE用法及代碼示例
- PostgreSQL LEAD用法及代碼示例
- PostgreSQL NTILE用法及代碼示例
- PostgreSQL CUME_DIST用法及代碼示例
- PostgreSQL RANK用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – NULLIF() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。