SQL中是否存在支持三参数的IFNULL函数以替代IF条件判断?
替代SQL双分支IF语句的函数
当然有这类函数,不同SQL数据库的实现略有差异,以下是常见的几种方案:
1. 数据库专属函数
- MySQL/MariaDB:直接使用内置的
IF()函数,完全符合你想要的简写形式:IF(val IS NULL, "was null", "was not null") - Oracle:可以用
NVL2()函数,注意参数顺序是「非NULL时的返回值」在前,「NULL时的返回值」在后:NVL2(val, "was not null", "was null") - SQL Server:提供
IIF()函数,用法和MySQL的IF()一致:IIF(val IS NULL, "was null", "was not null")
2. 通用SQL标准方案:CASE表达式
如果需要跨数据库兼容,推荐使用CASE表达式,这是SQL标准语法,所有主流数据库都支持:
CASE WHEN val IS NULL THEN "was null" ELSE "was not null" END
它不仅能处理NULL判断,还能扩展更复杂的多分支逻辑,实用性很强。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

