GaussDB SQL基本语法示例-CASE表达式

news/2024/9/29 11:29:42

一、前言
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代码时,可以根据具体的业务需求灵活选择简单形式或搜索形式来进行编写,这样可以大大提高编码效率和代码可读性。

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

——结束


https://support.huaweicloud.com/intl/zh-cn/gaussdb/index.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

工作繁杂,如何防止工作遗漏遗忘?

来源:tita.com 不知道大家工作中是否有这样的情况:1.工作过程中工作任务经常被打断,打乱正常的工作节奏; 2.因为不方便统一记录工作及工作要求,经常忘记给领导反馈工作进展; 3.因为工作繁多,经常会出现工作遗漏遗忘的现象。 …… 如果你的工作计划出现了这样的问题,就是…

GaussDB数据库特性-物化视图简介

一、前言 随着企业数据量的不断增长和业务需求的复杂性增加,选择一个高效、可靠且智能的数据存储和管理解决方案变得越来越重要。GaussDB是一种先进的关系型数据库管理系统,为企业提供了强大的数据处理能力,其物化视图(Materialized Views)功能在数据查询和管理方面具有重…

微软账号注册

注册地址 https://signup.live.com/signup 少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一把吧 我的最近更新 最新发布文章、框架、咨询等,来看看吧

解决:PC微信弹窗《当前客户端版本过低,请前往应用商店升级到最新版本客户端后再登录》

目录1. 背景 2. 利用cheat Engine直接修改内存 3. 利用Python代码直接修改内存1. 背景虽然人类都是喜新厌旧的,但也不是什么东西都是新的好。今天换了台服务器,发现正常使用微信,弹窗提醒说版本太低了,根本不给登录。没办法啊,机器人只兼容这个版本的,只能到处找解决方案…

黑马PM-内容项目-需求收集管理

什么是需求需求如何收集 常见需求收集方式竞品分析用户访谈实地调研需求管理

浅浅记录学习情况叭

Basic Concepts对于一个给定的网络G=(V,E),其中V为网络的节点集,E为网络的边集. Trace(迹): 将G划分为q个社区,我们用一个qxq的对称矩阵e来表示该划分,e中的每个元素表示连接社区i与社区j的边在G的全部边中所占的比例显然有∑i,jeij=1。矩阵e的迹Tr(e)表示连接社区内部节点的边…

sentinel-transport-SPI-HeartbeatSenderInitFunc

说明 我们引入以下依赖<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>1.8.6</version> </dependency>配置环境变量-Dcsp.sentinel.dashboard.server=loca…

这些年出版的书籍——归档整理

随着出版的书籍越来越多,收到的各种邮件也越来越频繁,遂于百忙之中,抽空整理一下书籍相关的资料和信息。《ASP.NET MVC企业级实战》出版日期:2017年3月目录:https://www.cnblogs.com/jiekzou/p/5625762.html随书源码:因某些原因,原百度云盘下载地址已被封,qq群文件里面…