GaussDB SQL基础语法示例-常见的条件表达式
目录
一、前言
SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。
本系列将以《云数据库GaussDB—SQL参考》为主线进行介绍。
二、条件表达式的概念及GaussDB中的常见条件表达式
条件表达式是指在数据库中进行SQL语句查询时,根据特定条件筛选出符合要求的数据所使用的表达式。 在GaussDB数据库中,CASE、DECODE、COALESCE、NULLIF、GREATEST和NVL等都是常用的条件表达式。
- CASE:根据条件进行多分支判断,根据不同的条件返回不同的结果。
- DECODE:GaussDB数据库提供的函数功能,相当于SQL语言中的IF-THEN-ELSE语句,根据第一个参数和后续参数进行比较,返回符合条件的结果。
- COALESCE:返回第一个非空的参数值。如果所有参数都为空,那么就会返回NULL。COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
- NULLIF:用于比较两个字段的值,如果它们相等,则返回NULL,否则返回第一个字段的值。要求两个表达式数据类型一致。
- GREATEST:用于返回多个数字值中的最大值。
- NVL:接受两个参数,如果第一个参数为空,则返回第二个参数的值;如果第一个参数不为空,则返回第一个参数的值。
下文将逐一进行介绍。
三、GaussDB中常用的条件表达式(语法 + 示例)
1、CASE表达式
1)语法:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 …… ELSE result END |
说明:根据条件进行多分支判断,根据不同的条件返回不同的结果。
- 如果结果为真,CASE表达式的结果就是符合该条件所对应的result。
- 如果结果为假,则以相同方式处理随后的WHEN或ELSE子句。
- 如果各WHEN condition都不为真,表达式的结果就是在ELSE子句执行的result。如果省略了ELSE子句且没有匹配的条件,结果为NULL。
2)示例:
SELECT name ,age ,CASE WHEN age < 18 THEN '未成年' WHEN age >= 18 AND age < 60 THEN '成年' ELSE '老年' END AS age_group FROM company; |
解析:
这段代码主要是从 "company" 表中选择 "name" 和 "age" 数据,并通过“CASE表达式”为每个用户生成一个根据年龄划分的组别('未成年'、'成年' 或 '老年')。
另参见,前面的文章《GaussDB SQL基本语法示例-CASE表达式》 。
2、DECODE表达式
1)语法:
DECODE(base_expression,compare1,value1,compare(n),value(n),default) |
说明:GaussDB数据库提供的函数功能,相当于IF-THEN-ELSE语句,根据第一个参数和后续参数进行比较,返回符合条件的结果。
2)示例:
SELECT name ,salary ,DECODE(salary, NULL, '未知', 5000, '初级标准线', 20000, '中级标准线',30000, '高级级标准线', '其他') AS salary_level FROM company ORDER BY salary ; |
解析:
这段代码的目的是从 "company" 表中选择 "name" 和 "salary" 数据,并通过“DECODE表达式”定义工资级别('未知'、'初级标准线'、'中级标准线'、 '高级标准线'、‘其他’)。
3、COALESCE表达式
1)语法:
COALESCE(value1,value2,…) |
说明:返回第一个非空的参数值。如果所有参数都为空,那么就会返回NULL。COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
2)示例:
SELECT name ,COALESCE(address, '未知地址') AS address FROM company; |
解析:这个查询将返回每个员工的名字和地址,通过“表达式COALESCE”判断,如果地址未知,它将显示 '未知地址'。
4、NULLIF表达式
1)语法:
NULLIF(value1,value2) |
说明:用于比较两个字段的值,如果它们相等,则返回NULL,否则返回第一个字段的值。要求两个表达式数据类型一致。
2)示例:
SELECT NULLIF('abc', 'abc'); -- 返回NULL SELECT NULLIF('abc', '123'); -- 返回'123' |
5、GREATEST/ LEAST表达式
1)语法:
GREATEST(value1,value2,…) LEAST(value1,value2,…) |
说明:GREATEST用于返回多个数字值中的最大值。LEAST,从一个任意数字表达式的列表里选取最小的数值。以上的数字表达式必须都可以转换成一个普通的数据类型。
2)示例:
SELECT GREATEST(10, 20, 30); -- 返回30 SELECT LEAST(10, 20, 30); -- 返回10 |
6、NVL表达式
1)语法:
NVL(value1,value2,…) |
说明:接受两个参数,如果第一个参数为空,则返回第二个参数的值;如果第一个参数不为空,则返回第一个参数的值,参数类型必须一致。
2)示例:
SELECT name ,salary ,NVL(salary,default_salary) AS d_salary FROM company; |
解析:这个查询将返回每个员工的名字和薪水,通过“表达式NVL”判断,如果salary为空,则用取默认的default_salary 。
四、小结
条件表达式是数据库查询中非常有用的工具,今天介绍的CASE、DECODE、COALESCE、NULLIF、GREATEST和NVL等,在GaussDB数据库中是非常常用的,通过使用这些条件表达式,我们可以更加灵活地对数据进行查询和操作,提高程序的效率和可读性。同时,它们也使得数据的处理更为方便和快捷,为数据分析和决策提供了有力的支持。
--结束
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源 MoE 模型 Mixtral 8x7B 性能超过 GPT-3.5
大模型创业公司 Mistral AI 终于介绍了前两天“开源”的MoE 模型 Mixtral 8x7B。 Mistral AI 用「磁链链接」开源了 87 GB 的 8x7B MoE 模型 官方称,Mixtral 8x7B 是开放权重的高质量稀疏混合专家模型 (SMoE),采用 Apache 2.0 License 开源。在大多数基准测试中,Mixtral 的成绩都优于 Llama 2-70B,且推理速度提升了 6 倍。而且在大多数标准基准测试中超过 GPT-3.5。 因此,Mistral AI 称 Mixtral 是最强大的开放权重模型,也是成本/性能权衡方面的最佳模型。 Mixtral 主要特性 • 32k上下文 • 支持英语、法语、意大利语、德语和西班牙语 • 性能超过 Llama 2 系列和GPT-3.5 • 在代码生成方面具有强劲性能 • 在 MT-Bench 上获得 8.3 分 Mixtral 作为稀疏混合专家网络,是一个纯解码器模型,其中前馈块从 8 组不同的参数组中选择。在每一层,对于每个 token,路由网络选择两组“专家”来处理 token 并相加地结合它们的输出。...
- 下一篇
从概念到实践,带你掌握层次递归查询
本文分享自华为云社区《GaussDB数据库SQL系列-层次递归查询》,作者: Gauss松鼠会小助手2。 一、前言 层次递归查询是一种常见的SQL查询方式,特别是在一些层次化的数据存储结构中经常用到。本文主要以GaussDB数据库为实验平台,为大家讲解其使用方法。 二、GuassDB数据库层次递归查询概念 层次化结构可以理解为树状数据结构,由节点构成。举个简单的例子,如下图所示,由子节点向上查询根节点,或者由根节点遍历所有子节点: 递归查询是指查询中需要多次调用自身的查询方式。在递归查询中,查询会反复地递归进入到一个子查询中,直到查询得到满足条件的结果或遍历完整个查询范围。递归查询在数据库领域中有着重要的应用。方便数据处理,简化开发代码。 在GaussDB数据库中,递归查询可以通过使用 “select…start with…connect by…prior…” 和“WITH RECURSIVE”语法来实现。 三、GaussDB数据库层次递归查询实验示例 1、创建实验表 --创建实验表 CREATE TABLE area( a_code VARCHAR(10) ,a_n...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)