了解 GaussDB SQL 中 CASE 表达式

一、前言

SQL 是用于访问和处理数据库的标准计算机语言。GaussDB 支持 SQL 标准(默认支持 SQL2、SQL3 和 SQL4 的主要特性)。

本系列将以《云数据库 GaussDB—SQL 参考》在线文档为主线进行介绍。

二、CASE Expression(CASE 表达式)介绍

在 GaussDB SQL 中,CASE 表达式(CASE Expression)是一个非常强大且常用的工具,可以用于在 SQL 中执行基于条件的操作。CASE 表达式类似于 IF-THEN-ELSE 语句,但使用起来更加灵活,易于阅读和编写。

CASE 表达式包含两种形式,一种是简单形式,一种是搜索形式。下面将分别介绍这两种形式的写法、语法以及使用方法。

三、GaussDB 数据库中的简单 CASE 表达式

1、基本概念

简单 CASE 表达式是指在给定的表达式上执行基于等式的比较,如果表达式等于某个值,则执行某个操作。即依据 input_expression 与 when_expression 的匹配结果跳转到相应的 result_expression。

2、基本语法

CASE input_expressionWHEN when_expression THEN result_expression[...n][ELSE else_result_expression]END;

说明

其中,input_expression 表示需要比较的表达式,when_expression 等表示需要比较的值,result_expression 等表示各个值相等时的结果,else_result_expression 表示当 input_expression 不等于任何值时的默认结果

Tip:

CASE:简单 CASE 函数中支持子查询,但须注意 input_expression 与 when_expression 是可匹配的。 另外,如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时,DLI 将返回 else_result_expression;当没有指定 ELSE 子句时,返回 NULL 值。

3、示例

假设根据固定的工资定义职员级别,可按如下 SQL 执行:

SELECT name,salary,CASE salaryWHEN 15000 THEN '初级'WHEN 20000 THEN '中级'WHEN 25000 THEN '高级'WHEN 30000 THEN '高级'WHEN 35000 THEN '高级'ELSE NULLEND AS levelFROM companyORDER BY salary;

 

SQL 语句解析

测试使用的是在 GaussDB 数据库中创建的一张 company 表。

这段 SQL 是从 “company” 表中选择员工的名字(name)、薪水(salary)以及一个根据薪水等级分类的字段(level)。并使用 “ORDER BY salary” 语句将结果按照薪水从低到高的顺序进行排序。

简单 CASE 表达式的工作方式:

如果 “salary” 字段的值等于 15000,那么 “level” 字段的值就是 “初级”。

如果 “salary” 字段的值等于 20000,那么 “level” 字段的值就是 “中级”。

如果 “salary” 字段的值等于 25000 或 30000 或 35000,那么 “level” 字段的值都是 “高级”。

如果 “salary” 字段的值不等于以上任何值,那么 “level” 字段的值就是 NULL。

四、GaussDB 数据库中的搜索 CASE 表达式

1、基本概念

搜索 CASE 表达式是指在给定的表达式上执行基于不等式的比较,如果表达式满足给定的条件,则执行相应操作。即按指定顺序为每个 WHEN 子句的 boolean_expression 求值。返回第一个取值为 TRUE 的 boolean_expression 的 result_expression。

2、基本语法

CASE WHEN boolean_expression THEN result_expression[...n][ELSE else_result_expression]END;

说明:

其中,boolean_expression 等表示需要比较的条件,result_expression 等表示满足对应条件时的操作结果,else_result_expression 表示当 expression 不满足任何条件时的默认结果。

Tip:

boolean_expression:可以包含子查询,但整个 boolean_expression 表达式返回值只能是布尔类型。

如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时,DLI 将返回 else_result_expression;当没有指定 ELSE 子句时,返回 NULL 值。

3、示例

假设根据工资的范围定义职员级别,可按如下 SQL 执行:

SELECT name,salary,CASE WHEN salary < 15000 THEN '初级'WHEN salary BETWEEN 15000 AND 25000 THEN '中级'WHEN salary >25000 THEN '高级'ELSE NULLEND AS levelFROM companyORDER BY salary;

 

SQL 语句解析

这段 SQL 同上文,是从 "company" 表中选择员工的姓名(name)、薪水(salary)以及根据薪水等级进行分类(level)。

搜索 CASE 表达式的工作方式:

当薪水(salary)小于 15000 时,薪水等级被标记为 "初级"。

当薪水在 15000 和 25000 之间(包括 15000 和 25000)时,薪水等级被标记为 "中级"。

当薪水大于 25000 时,薪水等级被标记为 "高级"。

如果以上条件都不满足,薪水等级被标记为 NULL。

综上,这个 SQL 语句的主要目的是获取员工信息,根据其薪水水平对其进行分类,并按照薪水的水平进行排序。

五、小结

GaussDB 中的 CASE 表达式是一个非常有用的工具,可以用于在 SQL 中执行基于条件的操作,实现条件判断和分支逻辑,进一步优化数据库查询和操作。在编写 SQL 代码时,可以根据具体的业务需求灵活选择简单形式或搜索形式来进行编写,这样可以大大提高编码效率和代码可读性。

常见使用场景,如:二次定义标签、饱和度统计、计算指标、数据格式转换

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

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

相关文章

sCrypt受邀在中国人民大学举办《区块链与数字经济》课程讲座

4月17日&#xff0c;可一科技特邀美国sCrypt公司的开发工程师周全&#xff0c;在中国人民大学的《区块链与数字经济》课程上进行了讲座。周全讲解了区块链的分布式设计、不可篡改特性&#xff0c;以及智能合约的基本原理&#xff0c;利用“智能家居触发机制”等生动比喻&#x…

laravel 使用 MongoDB

MongoDB MongoDB是一个基于分布式文件存储的数据库。由C语言编写。MongoDB 提供了面向文档的存储方式&#xff0c;操作起来比较简单和容易&#xff0c;支持“无模式”的数据建模&#xff0c;可以存储比较复杂的数据类型&#xff0c;是一款非常流行的文档类型数据库 使用场景 …

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作&#xff08;保姆级教学&#xff09; 以下是git的工作原理&#xff0c;觉得繁琐的可以跳过不看 Workspace&#xff1a;工作区 (平时存放代码的地方) Index / Stage&#xff1a;暂存区&#xff08;用于临时存放存放你的改动&#xff0c;事实上就是一个文件&…

OSPF虚链路

原理概述 通常情况下&#xff0c;一个OSPF网络的每个非骨干区域都必须与骨干区域通过ABR路由器直接连接&#xff0c;非骨干区域之间的通信都需要通过骨干区域进行中转。但在现实中&#xff0c;可能会因为各种条件限制&#xff0c;导致非骨干区域和骨干区域无法直接连接&#x…

Unity自定义动画-Animation动画数据-How is “fileIDToRecycleName“ generated

一般美术和程序分工明确的项目 fbx确实是和动画一一对应的&#xff1b; 但一些独立&#xff0c;或者小工作室的项目&#xff0c;就没法保证了&#xff0c;关键还是在于 Unity的 .meta 目录 查找和对比了一下 .fbx 和 .meta&#xff1a; 缓存和不缓存Animation 具体的Animat…

记录MySQL数据库查询不等于xxx时的坑

目录 一、背景 二、需求 三、方法 四、示例 一、背景 在使用MySQL数据库查询数据时&#xff0c;需要查询字段name不等于xxx的记录&#xff0c;通过where name ! xxx查询出来的记录不符合预期&#xff0c;通过检查发现少了name字段为null的记录&#xff0c;后经查询得知在My…

安全加固

目录 1.文件锁定管理 2.设置用户账户有效期 3.查看并清除命令历史记录 4.设置用户超时登出时间 5.用户切换 6.用户提权 7.禁用重启热键CtrlAltDel 8.设置单用户模式密码 9.调整BIOS引导设置 10.禁止root用户从本地登录&#xff1a; 11.禁止root用户通过ss…

IDM下载器激活

文章目录 1、Internet Download Manager简介2、Internet Download Managery应用3、Internet Download Managery下载 1、Internet Download Manager简介 Internet Download Manager (IDM) 是一款功能强大的下载管理软件&#xff0c;旨在帮助用户更高效地管理和加速其下载任务。它…

Hive JSON数据处理

Hive JSON数据处理 JSON&#xff08;JavaScript Object Notation&#xff09;文件格式是一种轻量级的数据交换格式&#xff0c;用于存储和传输结构化的数据。它基于JavaScript的语法&#xff0c;但是可以被多种编程语言所支持和解析&#xff0c;因此被广泛应用于各种场景。 J…

AWS云优化:实现性能和成本的最佳平衡

随着企业数字化转型的加速&#xff0c;对云计算平台的需求也不断增长。AWS作为云计算行业的领导者之一&#xff0c;提供了广泛的云服务和解决方案&#xff0c;帮助企业实现业务的创新和发展。在AWS云上部署应用程序和服务后&#xff0c;对其进行优化是至关重要的&#xff0c;以…

易图讯科技数字武装三维电子沙盘

深圳易图讯科技(www.3dgis.top)集成了高清卫星影像、地形数据、实景三维模型、基干民兵、普通民兵、重要目标、兵要地志、企业潜力 、行业潜力 、社会组织潜力 、特种装备器材潜力、敌情数据、现场环境数据、物联感知信息&#xff0c;构建一体化的数字孪生空间&#xff0c;实现…

【挑战30天首通《谷粒商城》】-【第一天】【10 番外篇】 解决docker 仓库无法访问 + MobaXterm连接VirtualBox虚拟机

文章目录 课程介绍 1、解决docker 仓库无法访问 2、 MobaXterm连接VirtualBox虚拟机 Stage 1&#xff1a;下载MobaXterm选择适合你的版本 Stage 2&#xff1a;vagrant ssh 连接&#xff0c;开启ssh访问 Stage 2-1&#xff1a;su获取root账号权限,输入密码&#xff08;默认vagra…

(done) 什么是马尔可夫链?Markov Chain

参考视频&#xff1a;https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 如下图所示&#xff0c;马尔可夫链条实际上就是 “状态机”&#xff0c;只不过状态机里不同状态之间的边上是 “…

2.数据类型与变量(java篇)

目录 数据类型与变量 数据类型 变量 整型变量 长整型变量 短整型变量 字节型变量 浮点型变量 双精度浮点型 单精度浮点型 字符型变量 布尔型变量&#xff08;boolean&#xff09; 类型转换 自动类型转换(隐式) 强制类型转换(显式) 类型提升 字符串类型 数据类…

Windows:管理用户账户,密码策略和安全配置

在Windows操作系统中&#xff0c;管理用户账户和密码策略是确保系统安全的关键步骤。本文将探讨如何通过PowerShell和其他Windows工具管理用户账户&#xff0c;包括查看和设置密码策略、检查用户状态&#xff0c;以及导出和导入安全策略。这些管理任务对于系统管理员尤其重要&a…

IT行业现状与未来趋势-技术创新日新月异

目录 一、引言 二、IT行业现状 技术创新日新月异 市场需求持续增长 人才竞争激烈 网络安全问题凸显 三、IT行业未来趋势 人工智能将更加普及 区块链技术将改变商业模式 网络安全将成为重要战略 数字化转型将加速推进 四、结语 一、引言 随着科技的飞速发展&#x…

大模型微调之 在亚马逊AWS上实战LlaMA案例(十)

大模型微调之 在亚马逊AWS上实战LlaMA案例&#xff08;十&#xff09; 训练数据集格式 SageMaker JumpStart 目前支持域适应格式和指令调整格式的数据集。在本节中&#xff0c;我们指定两种格式的示例数据集。有关更多详细信息&#xff0c;请参阅附录中的数据集格式化部分。 …

密探渗透工具v1.08测试版

目录 前言 免责声明 工具开发者: 工具项目地址: 1.作者做工具的缘起 2.功能介绍 3.工具的更新日志 4.安装与使用 4.1 工具下载 4.2 在jdk8环境下运行: 4.3 运行界面 4.4 资产测绘功能(fofa,鹰图和Quake) 4.5 指纹识别功能 ​编辑 4.6 敏感信息与接口扫描 4.7 文…

MinIO学习笔记

MINIO干什么用的&#xff1a; AI数据基础设施的对象存储 为人工智能系统提供数据支持&#xff0c;数据存储&#xff1b;对象存储&#xff08;Object Storage&#xff09;是一种数据存储架构&#xff0c;它以对象为单位来处理、存储和检索数据&#xff0c;每个对象都包含了数据本…

sipeed 的 MaixCam显示图片

WiFi联网后&#xff0c;把固件升级到最新 一根tpyc-c连接线为MaixCam供电&#xff0c;点击液晶屏settings 在WiFi中设置确保联网&#xff0c;在更新MaixPy中升级固件 可以选择国内源加速&#xff0c;将固件升级到最新版 MaixVision的操作 1&#xff0c;在MaixVision左下角…