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

news/2025/2/21 3:48:57/文章来源:https://www.cnblogs.com/xiaoxu0211/p/18567679

一、前言

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 result1WHEN condition2 THEN result2……ELSE resultEND

说明:根据条件进行多分支判断,根据不同的条件返回不同的结果。

如果结果为真,CASE表达式的结果就是符合该条件所对应的result。
如果结果为假,则以相同方式处理随后的WHEN或ELSE子句。
如果各WHEN condition都不为真,表达式的结果就是在ELSE子句执行的result。如果省略了ELSE子句且没有匹配的条件,结果为NULL。
2)示例:

SELECT name,age,CASEWHEN age < 18 THEN '未成年'WHEN age >= 18 AND age < 60 THEN '成年'ELSE '老年'END AS age_groupFROM 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_levelFROM company ORDER BY salary ;

在这里插入图片描述

解析:

这段代码的目的是从 "company" 表中选择 "name" 和 "salary" 数据,并通过“DECODE表达式”定义工资级别('未知'、'初级标准线'、'中级标准线'、 '高级标准线'、‘其他’)。

3、COALESCE表达式
1)语法:

COALESCE(value1,value2,…)

说明:返回第一个非空的参数值。如果所有参数都为空,那么就会返回NULL。COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。

2)示例:

SELECT name,COALESCE(address, '未知地址') AS addressFROM company;

在这里插入图片描述

解析:这个查询将返回每个员工的名字和地址,通过“表达式COALESCE”判断,如果地址未知,它将显示 '未知地址'。

4、NULLIF表达式
1)语法:

NULLIF(value1,value2)

说明:用于比较两个字段的值,如果它们相等,则返回NULL,否则返回第一个字段的值。要求两个表达式数据类型一致。

2)示例:

SELECT NULLIF('abc', 'abc'); -- 返回NULLSELECT NULLIF('abc', '123'); -- 返回'123'

5、GREATEST/ LEAST表达式
1)语法:

GREATEST(value1,value2,…)LEAST(value1,value2,…)

说明:GREATEST用于返回多个数字值中的最大值。LEAST,从一个任意数字表达式的列表里选取最小的数值。以上的数字表达式必须都可以转换成一个普通的数据类型。

2)示例:

SELECT GREATEST(10, 20, 30); -- 返回30SELECT LEAST(10, 20, 30); -- 返回10

6、NVL表达式
1)语法:

NVL(value1,value2,…)

说明:接受两个参数,如果第一个参数为空,则返回第二个参数的值;如果第一个参数不为空,则返回第一个参数的值,参数类型必须一致。

2)示例:

SELECT name,salary,NVL(salary,default_salary) AS d_salaryFROM company;

在这里插入图片描述

解析:这个查询将返回每个员工的名字和薪水,通过“表达式NVL”判断,如果salary为空,则用取默认的default_salary 。

四、小结

条件表达式是数据库查询中非常有用的工具,今天介绍的CASE、DECODE、COALESCE、NULLIF、GREATEST和NVL等,在GaussDB数据库中是非常常用的,通过使用这些条件表达式,我们可以更加灵活地对数据进行查询和操作,提高程序的效率和可读性。同时,它们也使得数据的处理更为方便和快捷,为数据分析和决策提供了有力的支持。

--结束

​https://carrier.huawei.com/cn/products/it-new/cloud/dws

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/840888.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GaussDB SQL基础语法示例-数组表达式

一、前言 SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。 本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。 欢迎使用GaussDB数据库数组表达式。在本文中,我们将介绍GaussDB数据库中数组表达式的概…

周蕊、王聪的第三次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 以小组为单位,完成一个电梯演讲作业姓名-学号 周蕊-2022329301039、王聪2022329301036视频链接: http://xhslink.com/a/EbZ16dimtNp0 1.产品介绍 1.1. 产品简介实验室是高校开展教学科研和自主…

Vulnhub Hackademic:RTB1

0x01:端口扫描 主机发现 nmap -sn 192.168.231.0/24主机ip:192.168.231.136 全端口扫描 nmap -sT -sC -sV -O -p- 192.168.231.136 -oA /root/scan扫描到两个端口,22ssh端口关闭,80http端口开放,其中http跑的是apache服务器 UDP扫描 nmap -sU --min-rate 10000 -p- 192.16…

支持无限加载的js图片画廊插件

在线演示 下载natural-gallery-js是一款支持无限加载的js图片画廊插件。该js图片画廊支持图片的懒加载,可以对图片进行搜索,分类,还可以以轮播图的方式来展示和切换图片。使用方法 在页面中引入下面的CSS和js文件。<link rel="stylesheet" href="../dis…

[豪の学习笔记] 操作系统#001

操作系统的概念、功能、特征、发展和分类,终端和异常,系统调用,操作系统体系结构,操作系统引导,虚拟机1.1.1 - 操作系统的概念、功能 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用…

Vue Devtools的下载和安装

1.下载 下载地址:https://github.com/vuejs/vue-devtools/tree/v5.1.1 下载下来zip包。解压到指定文件夹 2.安装依赖 在这个目录,执行npm install命令进行依赖安装 4. 修改配置 打开解压目录vue-devtools-master下的shells/Chrome/manifest.json文件,将代码"persistent…

边缘计算与MEC浅谈

边缘计算是在靠近物或数据源头的网络边缘侧,通过融合网络、计算、存储、应用核心能力的分布式开放平台,就近提供边缘智能服务。简单点讲,边缘计算是将从终端采集到的数据,直接在靠近数据产生的本地设备或网络中进行分析,无需再将数据传输至云端数据处理中心。本文分享自天…

mybatis的拓展-----mybatis的内置参数和OGNL表达式的使用

mybatis的两个内置参数 1,_parameter 代表整个参数 单个参数,_parameter 就是这个参数多个参数 会被封装成一个map,_parameter就是代表这个map 例如接口中有一个方法 public List<Employee> getEmpsTestInnerParameter(Employee employee); _parameter就代表employee…

你的活动策划效率低?试试这个方法!

营销人的日常痛点:活动策划究竟有多难?任务繁杂,难以理清优先级一场成功的活动通常包含数十甚至上百个任务。活动前期要筹备物料、协调场地,中期要执行推广方案,后期还要跟进数据复盘。任务堆积如山,往往让人无从下手。协作难度大,信息容易丢失活动策划需要跨部门、跨团…

打开电脑后一直弹出“交互式检测服务”窗口

既然也mysql有关,服务中找到上图exe所对应的服务,右键=》属性 原来选中了“允许服务与桌面交互”,取消上图的勾,重启MYSQL82服务。在停止服务时,就发现弹出的交互式服务检测提示窗自己消失了。至此第一张图的消息就不再弹出。

41、自动化作业、Resource Manager(JOB、并行度)

自动化作业 job 主要体现下面两点: 1、做什么 program 1、可以是现写的一个PL/SQL语句块 2、提前编译好的存储过程 3、操作系统层面的shell脚本,或者程序 2、什么时候做 schedule 周期性的执行(每周三,晚上十点) 自动化作业就是job,有两个东西组成: 1、program 2、sched…

40、安全_2(审计、钱包加密)

查看建立的函数: select * from dba_objects f where f.OBJECT_NAME like FUN%;策略1和策略2同时建立之后,查询结果: SQL> select name from car; NAME -------------------- toyota volvo hondaSQL> select name,cost from car; NAME COST --------------------…