PostgreSQL函数的条件表达式

news/2024/7/9 20:28:42 标签: postgresql, 数据库

PostgreSQL函数的条件表达式

http://postgres.cn/docs/14/functions-conditional.html

CASE

SQL CASE表达式是一种通用的条件表达式。
支持两种写法,类似于其他编程语言的if/else和switch语句。

-- 写法1:类似于 if/else 语句。
CASE WHEN condition THEN result
     [WHEN ...]
     [ELSE result]
END

-- 写法2:类似于 switch 语句。
CASE expression
    WHEN value THEN result
    [WHEN ...]
    [ELSE result]
END

-- 用例1:
SELECT
CASE WHEN 1=2 THEN 't1'
WHEN 2=2 THEN 't2'
WHEN 3=2 THEN 't3'
ELSE 'te'
END

-- 用例2:
SELECT CASE 2
	WHEN 1 THEN 't1'
	WHEN 2 THEN 't2'
	WHEN 3 THEN 't3'
	ELSE 'te'
END CASE;
-- 输出:
t2

COALESCE

COALESCE函数返回它的第一个非空参数的值。当且仅当所有参数都为空时才会返回空。
它常用于在为显示目的检索数据时用缺省值替换空值。
迁移时Oracle的NVL方法,可以使用COALESCE和CASE方法达到类似效果替换。

COALESCE(value [, ...])

-- 用例:
SELECT 
COALESCE(NULL, NULL),
COALESCE(1, 2), 
COALESCE(1, NULL),
COALESCE(NULL, 2),
COALESCE(NULL, NULL, 3)
-- 输出:
<null>	1	1	2	3

NULLIF

当value1和value2相等时,NULLIF返回一个空值。 否则它返回value1。
这些可以用于执行前文给出的COALESCE例子的逆操作。

NULLIF(value1, value2)

-- 用例:
SELECT 
NULLIF(1, 1), 
NULLIF(NULL, NULL), 
NULLIF(1, NULL), 
NULLIF(NULL, 1)
-- 输出:
<null>	<null>	1	<null>

GREATEST和LEAST

GREATEST和LEAST函数从一个任意的数字表达式列表里选取最大或者最小的数值。
这些表达式必须都可以转换成一个普通的数据类型,它将会是结果类型。
列表中的 NULL 数值将被忽略。只有所有表达式的结果都是 NULL 的时候,结果才会是 NULL。

GREATEST(value [, ...])
LEAST(value [, ...])

-- 用例:
SELECT
GREATEST(1,8,3), 
LEAST(1,8,3)
-- 输出:
8	1

请注意GREATEST和LEAST都不是 SQL 标准,但却是很常见的扩展。
某些其他数据库让它们在任何参数为 NULL 时返回 NULL,而不是在所有参数都为 NULL 时才返回 NULL。


http://www.niftyadmin.cn/n/4961863.html

相关文章

IDEA项目实践——mybatis实践,创建一个父目录专门存放mybatis项目

系列文章目录 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍_intellij 创建scala IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——动态SQL、关系映…

R语言实现网状Meta分析(1)

#R语言实现网状Meta library(gemtc) help(package"gemtc") data<-gemtc::smoking #注意按照实例格式编写数据 net<-mtc.network(data$data.ab) #网状图 plot(net,mode"circle",displaylabelsT,boxed.labelF) summary(net) #网状model model<-mtc…

typescript基础之 as const

as const是TypeScript中的一个用于修饰符&#xff0c;它可以被用来修改类型推断的行为。当as cons修饰符用在变量声明或表达式的类型上时&#xff0c;它会强制TypeScript将变量或表达式的类型视为不可变的&#xff08;immutable&#xff09;。这意味着&#xff1a; • 变量或…

PHP 高德地图,获取经纬度

function addresstolatlag($address){$abc "xxx学校(xx路店)";$key"24fb21b484f89f212dc3f4fd016e2b4d";//没有key$address $abc;$regeo_url"https://restapi.amap.com/v3/geocode/geo";$address_location$regeo_url."?outputJSON&a…

【深度学习 | ResNet核心思想】残差连接 跳跃连接:让信息自由流动的神奇之道

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

linux设备驱动模型:xbus、platform

目录 xbus&#xff1a;打造自属的驱动总线 buses_init()函数 bus_register()函数 device_register()函数 driver_register()函数 设备驱动模型框图 bus、dev、drv关系图 实验环节&#xff1a;xbus xbus.c文件 xdev.c文件 xdrv.c文件 Makefile文件 执行过程 platf…

rk3588 uboot延长BOOTDELAY时间

文章目录 前言一、修改CONFIG_BOOTDELAY的值二、CONFIG_BOOTDELAY读取前言 uboot的开发中,有时候需要修改uboot的启动延时,再uboot下操作一些命令等,可以修改CONFIG_BOOTDELAY的值来达到启动延时目的。 一、修改CONFIG_BOOTDELAY的值 diff --git a/u-boot/configs/rk3588_…

【广州华锐视点】VR教学课件编辑工具有哪些用处?

随着科技的不断发展&#xff0c;教育领域也在不断地进行创新。在众多的创新技术中&#xff0c;虚拟现实(VR)技术的应用为教育带来了前所未有的变革。广州华锐视点开发的VR教学课件编辑工具作为一种新型的教育工具&#xff0c;可以为我们的教学提供许多支持&#xff0c;从而提升…