首页 > 数据库 >GaussDB SQL基本语法示例-CASE表达式

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

时间:2024-11-27 11:12:11浏览次数:4  
标签:CASE salary 示例 GaussDB result SQL expression 表达式

一、前言
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_expression

WHEN 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 salary

                 WHEN 15000 THEN '初级'

                       WHEN 20000 THEN '中级'

                            WHEN 25000 THEN '高级'

                            WHEN 30000 THEN '高级'

                            WHEN 35000 THEN '高级'

                            ELSE NULL

                   END AS level

FROM company

ORDER 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 NULL

                   END AS level

FROM company

ORDER 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/gaussdb/index.html

标签:CASE,salary,示例,GaussDB,result,SQL,expression,表达式
From: https://www.cnblogs.com/xxxmut/p/18571923

相关文章

  • GaussDB云数据库SQL应用系列-视图管理
    ​一、前言GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。二、准备条件参考......
  • GaussDB云数据库SQL应用系列—索引管理
    一、前言随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了企业面临的重要问题。而数据库索引作为数据库优化的关键手段之一,对于提高数据库性能和查询效率具有重要作用。本文将介绍GaussDB云数据库的索引创建和管理方法,并结合实际应用场景进行分析......
  • GaussDB云数据库SQL应用系列-基础使用
    ​目录一、前言二、前提条件1、连接数据库实例2、GaussDB实例正常运行三、操作示例1、选择实例并进入SQL执行界面2、创建数据库用户3、创建数据库4、创建SCHEMA5、创建表(增删改查)1)创建3张表,并初始化一些数据2)假设查询场景,并通过SQL实现一、前言随着云计算技术的不......
  • GaussDB数据库SQL系列-自定义函数
    一、前言华为云GaussDB数据库是一款高性能、高安全性的云原生数据库,在GaussDB中,自定义函数是一个不容忽视的重要功能。本文将简单介绍一下自定义函数在GaussDB中的使用场景、使用优缺点、示例及示例解析等,为读者提供指导与帮助。二、自定义函数(Function)概述在SQL中,自定义函数(Fu......
  • GaussDB技术解读系列:运维自动驾驶探索
    ​随着企业数字化转型进入深水区,数据库系统越来越复杂,运维团队维护的数据库规模越来越大,传统工具化的运维已无法满足当前运维的要求,数据库运维逐渐向智能化发展。如何更好地感知和预测数据库故障,进而进行智能诊断、自适应恢复,是我们一直探索的内容。接下来本篇将分享GaussDB在运......
  • GaussDB数据库SQL系列-定义重载函数
    一、前言在本文中,我们将介绍GaussDB数据库中的用户定义函数重载的概念、用法以及示例。用户定义函数是SQL中常用的“编程工具”,允许我们自定义函数来处理和操作数据。而函数重载则是指在一个数据库中定义多个具有相同名字但参数不同的函数,以此实现不同的功能。二、函数重载的......
  • GaussDB数据库SQL系列-游标管理
    一、前言在数据库中,游标(cursor)是一种非常重要的工具,用于在数据库查询结果集中进行定位和操作。游标提供了一种在多行数据结果集中逐行处理每一行的机制,允许开发人员对每一行的数据进行操作,如检索、过滤、修改等。本文将结合GaussDB数据库,简单的给大家做一介绍。二、概述(GaussDB)......
  • GaussDB技术解读系列:高安全之密态等值
    ​本篇为大家分享GaussDB高安全的关键特性,名字叫密态等值,是一个关于全密态的关键能力。数据成为生产要素,合规要求趋于严格大家应该都有切身的体会,近些年数据的重要性越来越高,特别是国家已经把数据明确定义为了生产要素。生产要素是什么?就好像过去的石油,从工业革命时期开始,每一......
  • GaussDB技术解读系列:数据库迁移创新实践
    ​本篇将分享GaussDB数据库迁移的创新实践。易迁移能力是企业数据库替换选型的关键考量数据库的选型除了要看数据库本身的能力外,能否很平滑地从其他数据库迁移到GaussDB,也是很多企业考量的关键因素。而数据库能否平滑迁移有两个非常核心的要素,一个是数据库本身,比如能否很好地兼......
  • GaussDB技术解读系列:性能调优
    ​本篇为大家分享GaussDB性能调优的实践。主要包括三个部分,分别是性能调优的整体介绍,性能调优的关键技术,性能调优的应用实践。GaussDB性能调优简介 我们知道数据库作为系统软件,在整个计算机体系中起到关键的承上启下作用。可以看到应用程序通过北向接口与数据库进行交互,数据库......