📅  最后修改于: 2023-12-03 15:05:19.328000             🧑  作者: Mango
SQL 通用函数是能够在不同数据库平台上使用的函数,本文将介绍以下函数:
NVL 函数用于将一个 NULL 值替换为另一个值。
使用语法:NVL(expr1,expr2)
其中:
expr1
:要被检查的表达式expr2
:要返回的值如果 expr1
不为 NULL,则 NVL 返回 expr1
的值;如果 expr1
为 NULL,则返回 expr2
的值。
SELECT NVL(NULL, 'Hello') as result1,
NVL('World', 'Hello') as result2
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | |---------|---------| | Hello | World |
NVL2 函数根据第 1 个表达式是否为 NULL 来返回第 2 个或第 3 个表达式。
使用语法:NVL2(expr1, expr2, expr3)
其中:
expr1
:要被检查的表达式expr2
:如果 expr1
不为 NULL,则返回的表达式expr3
:如果 expr1
为 NULL,则返回的表达式SELECT NVL2(NULL, 'Hello', 'World') as result1,
NVL2('Oracle', 'Database', 'World') as result2
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | |---------|-----------| | World | Database |
解码函数是 Oracle 特定的函数,它在其他数据库中可能不存在或者有不同的实现方式。解码函数可根据第 1 个表达式的值返回第 2 个、第 3 个、第 4 个等表达式。
使用语法:DECODE(expr, search, result [, search, result]... [, default])
其中:
expr
:要被检查的表达式search
:要被检查的值result
:如果 expr
等于 search
,则返回的表达式default
:可选参数,如果没有任何一个 search
值和 expr
相等,则返回 default
表达式(默认为 NULL)SELECT DECODE('Oracle', 'Oracle', 'Database', 'MySQL', 'RDBMS') as result1,
DECODE(3, 1, 'One', 2, 'Two', 'Unknown') as result2,
DECODE(5, 1, 'One', 2, 'Two', 'Unknown') as result3
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | RESULT3 | |----------|---------|-----------| | Database | Unknown | Unknown |
合并函数将多个列或表中的值合并为一个结果。
SELECT CONCAT('Hello', ' ', 'World') as result1,
CONCAT_WS('-', '2021', '10', '06') as result2
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | |---------------|-------------| | Hello World | 2021-10-06 |
NULLIF 函数用于比较两个表达式是否相等,如果相等则返回 NULL,否则返回第一个表达式的值。
使用语法:NULLIF(expr1, expr2)
其中:
expr1
:要被检查的表达式expr2
:要进行比较的表达式SELECT NULLIF('Hello', 'Hello') as result1,
NULLIF('Oracle', 'Attractions') as result2
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | |---------|---------| | NULL | Oracle |
LNNVL 函数返回一个逻辑 NOT(NOT 运算符)并且将值转换为 NULL。如果表达式是 NULL 或 FALSE,则该函数返回 TRUE;否则,返回 FALSE。
使用语法:LNNVL(condition)
其中:
condition
:要进行 NOT 运算的条件表达式SELECT LNNVL(1 < 2) as result1,
LNNVL(NULL) as result2
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | |---------|---------| | FALSE | TRUE |
NANVL 函数用于将数值列或数值类型参数中的值 NaN 替换为所提供的值。如果传入的值不是 NaN,则该函数返回该值。
使用语法:NANVL(expr1, expr2)
其中:
expr1
:要被检查的数值表达式expr2
:要返回的值SELECT NANVL(10/0, -999) as result1,
NANVL(10/2, -999) as result2
FROM dual;
上述代码将返回以下结果:
| RESULT1 | RESULT2 | |---------|---------| | -999 | 5 |
本文介绍了 SQL 中的通用函数 NVL、NVL2、解码、合并、NULLIF、LNNVL 和 NANVL。这些函数是跨不同数据库平台通用的,可以帮助程序员更高效地处理数据。