GaussDB SQL基础语法示例-常见的条件表达式


风晓
风晓 2024-01-13 08:53:22 53954 赞同 0 反对 0
分类: 资源 标签: 国产数据库
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数据库中是非常常用的,通过使用这些条件表达式,我们可以更加灵活地对数据进行查询和操作,提高程序的效率和可读性。同时,它们也使得数据的处理更为方便和快捷,为数据分析和决策提供了有力的支持。  

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
桌面通用(全架构)【在双系统环境下隐藏Windows启动菜单】操作指南  2049
银河麒麟桌面操作系统V10(SP1)2203-如何进行远程桌面互访?  1990
银河麒麟桌面操作系统【保留数据盘重装系统】  1800
麒麟系统各种原因开不了机解决(合集)  1575
桌面通用(全架构)【rpm包转成deb包】操作方法  930
银河麒麟桌面操作系统 V10-SP1 双系统安装 efi 分区问题  914
统信系统安装(合集)  852
统信桌面专业版【手动分区安装UOS系统】介绍  844
统启动异常几种类型(initramfs 模式)  687
最近下载排行榜
桌面通用(全架构)【在双系统环境下隐藏Windows启动菜单】操作指南 0
银河麒麟桌面操作系统V10(SP1)2203-如何进行远程桌面互访? 0
银河麒麟桌面操作系统【保留数据盘重装系统】 0
麒麟系统各种原因开不了机解决(合集) 0
桌面通用(全架构)【rpm包转成deb包】操作方法 0
银河麒麟桌面操作系统 V10-SP1 双系统安装 efi 分区问题 0
统信系统安装(合集) 0
统信桌面专业版【手动分区安装UOS系统】介绍 0
统启动异常几种类型(initramfs 模式) 0
作者收入月榜
1

prtyaa 收益393.72元

2

zlj141319 收益220.97元

3

1843880570 收益214.2元

4

IT-feng 收益213.03元

5

风晓 收益208.24元

6

777 收益172.82元

7

Fhawking 收益106.6元

8

信创来了 收益105.89元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!