【GaussDB】 SQL基础语法:常见的条件表达式

发布时间:2026/5/28 12:41:55

【GaussDB】 SQL基础语法:常见的条件表达式 一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准默认支持SQL2、SQL3和SQL4的主要特性。本系列将以《云数据库GaussDB—SQL参考》为主线进行介绍。二、条件表达式的概念及GaussDB中的常见条件表达式条件表达式是指在数据库中进行SQL语句查询时根据特定条件筛选出符合要求的数据所使用的表达式。 在GaussDB数据库中CASE、DECODE、COALESCE、NULLIF、GREATEST和NVL等都是常用的条件表达式。CASE根据条件进行多分支判断根据不同的条件返回不同的结果。DECODEGaussDB数据库提供的函数功能相当于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 addressFROM company;解析这个查询将返回每个员工的名字和地址通过“表达式COALESCE”判断如果地址未知它将显示 未知地址。4、NULLIF表达式1语法NULLIF(value1value2)说明用于比较两个字段的值如果它们相等则返回NULL否则返回第一个字段的值。要求两个表达式数据类型一致。2示例SELECT NULLIF(abc, abc); -- 返回NULL SELECT NULLIF(abc, 123); -- 返回1235、GREATEST/ LEAST表达式1语法GREATEST(value1,value2,…) LEAST(value1,value2,…)说明GREATEST用于返回多个数字值中的最大值。LEAST从一个任意数字表达式的列表里选取最小的数值。以上的数字表达式必须都可以转换成一个普通的数据类型。2示例SELECT GREATEST(10, 20, 30); -- 返回30 SELECT LEAST(10, 20, 30); -- 返回106、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数据库中是非常常用的通过使用这些条件表达式我们可以更加灵活地对数据进行查询和操作提高程序的效率和可读性。同时它们也使得数据的处理更为方便和快捷为数据分析和决策提供了有力的支持。

相关新闻