第二十九章 SQL函数 COALESCE
文章目录
- 第二十九章 SQL函数 COALESCE
- 大纲
- 描述
- 返回值的数据类型
- 比较NULL处理函数
- 示例
第二十九章 SQL函数 COALESCE
返回第一个非空表达式的值的函数。
大纲
COALESCE(expression,expression [,...])
expression
- 要计算的一系列表达式。多个表达式被指定为逗号分隔的列表。此表达式列表限制为140
个表达式。
描述
COALESSE
函数按从左到右的顺序计算表达式列表,并返回第一个非空表达式的值。如果所有表达式的计算结果都为NULL
,则返回NULL
。
字符串返回时保持不变;保留前导和尾随空格。数字以规范形式返回,去掉了前导零和尾随零。
返回值的数据类型
非数字表达式(如字符串或日期)必须都属于相同的数据类型,并返回该数据类型的值。指定数据类型不兼容的表达式会导致SQLCODE-378
错误,并显示DataType
不匹配错误消息。可以使用CAST
函数将表达式转换为兼容的数据类型。
数值表达式可以是不同的数据类型。如果指定具有不同数据类型的数值表达式,则返回的数据类型是与所有可能的结果值最兼容的表达式数据类型,即具有最高数据类型优先级的数据类型。
文字值(字符串、数字或NULL
)被视为数据类型VARCHAR
。如果只指定两个表达式,则文字值与数值表达式兼容:如果第一个表达式是数值表达式,则返回其数据类型;如果第一个表达式是文字值,则返回VARCHAR
数据类型。
比较NULL处理函数
下表显示了各种SQL比较函数。如果逻辑比较测试为True
(A
与B
相同),则每个函数返回一个值;如果逻辑比较测试为False
(A
与B
不同),则每个函数返回另一个值。这些函数允许执行空逻辑比较。不能在实际相等(或不相等)条件比较中指定NULL
。
SQL函数 | 比较测试 | 返回值 |
---|---|---|
COALESCE(ex1,ex2,…) | ex = NULL for each argument | True tests next ex argument. If all ex arguments are True (NULL), returns NULL. False returns ex |
IFNULL(ex1,ex2) [two-argument form] | ex1 = NULL | True returns ex2 False returns NULL |
IFNULL(ex1,ex2) [three-argument form] | ex1 = NULL | True returns ex2 False returns ex3 |
{fn IFNULL(ex1,ex2)} | ex1 = NULL | True returns ex2 False returns ex1 |
ISNULL(ex1,ex2) | ex1 = NULL | True returns ex2 False returns ex1 |
NVL(ex1,ex2) | ex1 = NULL | True returns ex2 False returns ex1 |
NULLIF(ex1,ex2) | ex1 = ex2 | True returns NULL False returns ex1 |
示例
下面的嵌入式SQL示例接受一系列主机变量值,并返回第一个非空的(值d
)。请注意,ObjectScript空字符串(""
)在 SQL中被转换为NULL
:
ClassMethod Coalesce()
{s (a, b, c, e) = ""s d = "firstdata"s f = "nextdata"&sql(SELECT COALESCE(:a,:b,:c,:d,:e,:f) INTO :x)if SQLCODE '= 0 {w !,"Error code ",SQLCODE } else {w !,"The first non-null value is: ",x }
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Coalesce()The first non-null value is: firstdata
下面的示例按从左到右的顺序比较两列的值,并返回第一个非空列的值。对于某些行,FavoriteColors
列为NULL
;Home_State
列从不为NULL
。为了让Coalesce
将两者进行比较,FavoriteColors
必须转换为字符串:
SELECT TOP 25 Name,FavoriteColors,Home_State,
COALESCE(CAST(FavoriteColors AS VARCHAR),Home_State) AS CoalesceCol
FROM Sample.Person
以下动态SQL示例将COALESCE
与其他NULL
处理函数进行比较:
ClassMethod Coalesce1()
{s myquery = "SELECT TOP 50 %ID,"_"IFNULL(FavoriteColors,'blank') AS Ifn2Col,"_"IFNULL(FavoriteColors,'blank','value') AS Ifn3Col,"_"COALESCE(CAST(FavoriteColors AS VARCHAR),Home_State) AS CoalesceCol,"_"ISNULL(FavoriteColors,'blank') AS IsnullCol,"_"NULLIF(FavoriteColors,$LISTBUILD('Orange')) AS NullifCol,"_"NVL(FavoriteColors,'blank') AS NvlCol"_" FROM Sample.Person"s tStatement = ##class(%SQL.Statement).%New()s qStatus = tStatement.%Prepare(myquery)if qStatus '= 1 {w "%Prepare failed:" d $System.Status.DisplayError(qStatus) q}s rset = tStatement.%Execute()d rset.%Display()w !,"End of data"
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Coalesce1()
ID Ifn2Col Ifn3Col CoalesceCol IsnullCol NullifCol NvlCol
1 value $lb("Red","Orange","Yellow") $lb("Red","Orange","Yellow") $lb("Red","Orange","Yellow") $lb("Red","Orange","Yellow")
2 blank blank blank blank
6 blank blank blank blank
9 blank blank blank blank
10 blank blank blank blank
13 value $lb("Red","Orange","Yellow","Green") $lb("Red","Orange","Yellow","Green") $lb("Red","Orange","Yellow","Green") $lb("Red","Orange","Yellow","Green")
14 value ReOrangYellowGreen $lb("Red","Orange","Yellow","Green","Green") $lb("Red","Orange","Yellow","Green","Green") $lb("Red","Orange","Yellow","Green","Green")
15 value ReOrangYellowGreen $lb("Red","Orange","Yellow","Green","Yellow") $lb("Red","Orange","Yellow","Green","Yellow") $lb("Red","Orange","Yellow","Green","Yellow")
16 value $lb("White") $lb("White") $lb("White") $lb("White")
17 value $lb("Black") $lb("Black") $lb("Black") $lb("Black")
18 value $lb("Green","White") $lb("Green","White") $lb("Green","White") $lb("Green","White")
19 value $lb("Purple") $lb("Purple") $lb("Purple") $lb("Purple")
20 value $lb("Yellow") $lb("Yellow") $lb("Yellow") $lb("Yellow")
21 value $lb("Red","Red") $lb("Red","Red") $lb("Red","Red") $lb("Red","Red")
22 value $lb("Black","Black") $lb("Black","Black") $lb("Black","Black") $lb("Black","Black")
23 blank blank MT blank blank
24 value $lb("Blue") $lb("Blue") $lb("Blue") $lb("Blue")
25 blank blank WY blank blank
26 value $lb("White") $lb("White") $lb("White") $lb("White")
27 value $lb("Orange") $lb("Orange") $lb("Orange")
28 value $lb("Orange","White") $lb("Orange","White") $lb("Orange","White") $lb("Orange","White")
29 value $lb("Black") $lb("Black") $lb("Black") $lb("Black")
30 value $lb("Red","Green") $lb("Red","Green") $lb("Red","Green") $lb("Red","Green")
31 value $lb("Purple") $lb("Purple") $lb("Purple") $lb("Purple")
32 value $lb("Green","Red") $lb("Green","Red") $lb("Green","Red") $lb("Green","Red")
33 blank blank TX blank blank
34 value $lb("Blue","Green") $lb("Blue","Green") $lb("Blue","Green") $lb("Blue","Green")
35 value $lb("Yellow") $lb("Yellow") $lb("Yellow") $lb("Yellow")
36 value $lb("Red","Blue") $lb("Red","Blue") $lb("Red","Blue") $lb("Red","Blue")
37 blank blank HI blank blank
38 blank blank OR blank blank
39 blank blank NM blank blank
40 blank blank NJ blank blank
41 blank blank NY blank blank
42 value $lb("Black","Orange") $lb("Black","Orange") $lb("Black","Orange") $lb("Black","Orange")
43 value $lb("Blue") $lb("Blue") $lb("Blue") $lb("Blue")
44 blank blank MO blank blank
45 value $lb("Purple","Yellow") $lb("Purple","Yellow") $lb("Purple","Yellow") $lb("Purple","Yellow")
46 value $lb("Orange") $lb("Orange") $lb("Orange")
47 value $lb("Yellow","Green") $lb("Yellow","Green") $lb("Yellow","Green") $lb("Yellow","Green")
48 value $lb("Blue","Blue") $lb("Blue","Blue") $lb("Blue","Blue") $lb("Blue","Blue")
49 value $lb("Blue") $lb("Blue") $lb("Blue") $lb("Blue")
50 value $lb("White","Red") $lb("White","Red") $lb("White","Red") $lb("White","Red")
51 value $lb("White","Green") $lb("White","Green") $lb("White","Green") $lb("White","Green")
52 blank blank MT blank blank
53 value $lb("Red") $lb("Red") $lb("Red") $lb("Red")
54 blank blank MD blank blank
55 value $lb("Orange","Orange") $lb("Orange","Orange") $lb("Orange","Orange") $lb("Orange","Orange")
56 blank blank MD blank blank
57 value $lb("White") $lb("White") $lb("White") $lb("White")50 Rows(s) Affected
End of data
第二十九章 SQL函数 COALESCE相关推荐
- 第二十九章 SQL命令 DISTINCT
文章目录 第二十九章 SQL命令 DISTINCT 大纲 参数 描述 DISTINCT和ORDER BY DISTINCT和GROUP BY 字母大小写与DISTINCT优化 DISTINCT的其他用 ...
- 第二十四章 SQL函数 CEILING
文章目录 第二十四章 SQL函数 CEILING 大纲 参数 描述 示例 第二十四章 SQL函数 CEILING 数值函数,返回大于或等于给定数值表达式的最小整数. 大纲 CEILING(numeri ...
- 第六十九章 SQL函数 JSON_OBJECT
文章目录 第六十九章 SQL函数 JSON_OBJECT 大纲 参数 描述 选择模式和排序 ABSENT ON NULL 示例 第六十九章 SQL函数 JSON_OBJECT 将数据作为JSON对象返 ...
- 第二十二章 SQL函数 CAST(一)
文章目录 第二十二章 SQL函数 CAST(一) 大纲 参数 描述 转换数字 字符串类型转换 转换为DATE.TIME和TIMESTAMP 转换NULL和空字符串 转换日期 第二十二章 SQL函数 C ...
- 第二十五章 SQL函数 CHAR
文章目录 第二十五章 SQL函数 CHAR 大纲 参数 描述 示例 第二十五章 SQL函数 CHAR 返回具有在字符串表达式中指定的ASCII代码值的字符的字符串函数. 大纲 CHAR(code-va ...
- 第六十六章 SQL函数 ISNULL
文章目录 第六十六章 SQL函数 ISNULL 大纲 参数 描述 日期和时间显示转换 比较的NULL处理函数 示例 第六十六章 SQL函数 ISNULL 测试NULL并返回相应表达式的函数. 大纲 I ...
- 第十九章 Caché 函数大全 $INCREMENT 函数
文章目录 第十九章 Caché 函数大全 $INCREMENT 函数 大纲 参数 描述 参数 variable num INCREMENT或INCREMENT或INCREMENT或SEQUENCE $ ...
- 第二十二章 SQL命令 CREATE TRIGGER(二)
文章目录 第二十二章 SQL命令 CREATE TRIGGER(二) SQL触发器代码 ObjectScript触发代码 字段引用和伪字段引用 引用流属性 引用SQLComputed属性 标签 方法调 ...
- 【正点原子FPGA连载】 第二十九章TFT LCD画板实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...
最新文章
- zookeeper3.4集群搭建
- 通常,Node.js如何处理10,000个并发请求?
- PowerDesigner生成注释以及对应数据库的sql语句
- Nginx:Nginx limit_req limit_conn限速
- I/O Permission Bit Map in Task State Segment(TSS)
- 结构体学生成绩输入和输出
- LeetCode刷题——62. 不同路径
- BZOJ2768: [JLOI2010]冠军调查
- monaco-editor浏览器中的网页代码编辑器在项目中集成
- 基于matlab的紧急疏散模型仿真的代码,基于matlab的疏散仿真程序简介.pdf
- 第一台微型计算机处理器位数,微处理器芯片的位数指的是什么 - 全文
- 大数据平台自动化运维,数据中心运维平台
- MAC常用软件127
- dot全称_DOT是什么
- 点云外包矩形框(六面体)
- JS不跨域操控网易云音乐外链播放器
- Android使用VideoView播放网络视频
- 实训1_获取产业数据并存储_预处理与简单分析
- 2020北大软微复试知识整理
- 电气器件系列二十五:电子式压力传感器PPG-D(2)
热门文章
- hive增量表和全量表_你需要了解的全量表,增量表及拉链表
- 由真值表求逻辑表达式的方法
- PostgreSQL报表统计历史12月度数据,无数据补零
- SGU 187 Twist and whirl - want to cheat
- Amazon/eBay/Wish/Lazada/速卖通/Shopee/tiktok/沃尔玛/煤炉/补单黑科技?如何解决账号问题。
- Python读取wav音频文件
- 利用vue编写一个后台管理页面
- Android 一行代码搞定将错误日志放入到sd卡中且不需要任何权限,适配到android7.0
- 手机学python语言用什么软件好_如何在手机上面学习编程?有哪些软件推荐的?...
- 一道亚马逊算法面试题的情景分析