网站首页 > 技术文章 正文
1、coalesce(expr1, expr2, …, exprn)
描述:返回参数列表中第一个非NULL的参数值。
COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。
示例:
openGauss=# SELECT coalesce(NULL,'hello');
coalesce
----------
hello
(1 row)
备注:
1)如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。
2)它常用于在显示数据时用缺省值替换NULL。
3)和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
2、decode(base_expr, compare1, value1, Compare2,value2, … default)
描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。
示例:
openGauss=# SELECT decode('A','A',1,'B',2,0);
case
------
1
(1 row)
3、nullif(expr1, expr2)
描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。
nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。
示例:
openGauss=# SELECT nullif('hello','world');
nullif
--------
hello
(1 row)
备注:
如果两个参数的数据类型不同,则:
1)若两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如:
openGauss=# SELECT nullif('1234'::VARCHAR,123::INT4);
nullif
--------
1234
(1 row)
openGauss=# SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE);
ERROR: invalid input syntax for type timestamp: "1234"
2)若两种数据类型之间不存在隐式转换,则返回错误 。如:
openGauss=# SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE);
ERROR: operator does not exist: boolean = timestamp without time zone
LINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM sys_dummy;
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
4、nvl( expr1 , expr2 )
描述:如果expr1为NULL,则返回expr2。如果expr1非NULL,则返回expr1。
示例:
openGauss=# SELECT nvl('hello','world');
nvl
-------
hello
(1 row)
备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换。如果可以则返回第一个参数类型,否则返回错误。
5、greatest(expr1 [, …])
描述:获取并返回参数列表中值最大的表达式的值。
返回值类型:
示例:
openGauss=# SELECT greatest(1*2,2-3,4-1);
greatest
----------
3
(1 row)
""
openGauss=# SELECT greatest('HARRY', 'HARRIOT', 'HAROLD');
greatest
----------
HARRY
(1 row)
6、least(expr1 [, …])
描述:获取并返回参数列表中值最小的表达式的值。
示例:
openGauss=# SELECT least(1*2,2-3,4-1);
least
-------
-1
(1 row)
openGauss=# SELECT least('HARRY','HARRIOT','HAROLD');
least
--------
HAROLD
(1 row)
7、EMPTY_BLOB()
描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。
返回值类型:BLOB
示例:
--新建表
openGauss=# CREATE TABLE blob_tb(b blob,id int);
--插入数据
openGauss=# INSERT INTO blob_tb VALUES (empty_blob(),1);
--删除表
openGauss=# DROP TABLE blob_tb;
备注:使用DBE_LOB.GET_LENGTH求得的长度为0。
- 上一篇: Linux系统调用源码分析(二)
- 下一篇: 如何在内核中操作某个文件?
猜你喜欢
- 2024-11-22 正点原子I.MX6U嵌入式Linux C应用编程:第二章《文件I/O基础》
- 2024-11-22 如何将Python函数输出内容同时打印到屏幕和文件
- 2024-11-22 3个重点,20个函数分析,浅析FFmpeg转码过程
- 2024-11-22 Linux驱动基础篇:hello驱动
- 2024-11-22 Python自带的库(open函数)读写txt、csv、json、XML、Excel文件
- 2024-11-22 UG NX OPEN二次开发实例:UF,C语言编程,创建圆柱体,API文档翻译
- 2024-11-22 openGauss SEQUENCE函数
- 2024-11-22 Python文件操作的步骤
- 2024-11-22 Python读取与写入Excel模块:openpyxl
- 2024-11-22 PHP imap_open函数任意命令执行漏洞
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)