大家好,今天来为大家解答MySQL的CASE WHEN语句的使用详解(推荐)这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
CASE 有两种格式:
简单CASE 函数将一个表达式与一组简单表达式进行比较以确定结果。
CASE 搜索功能评估一组布尔表达式以确定结果。
两种格式都支持可选的ELSE 参数。
语法
简单CASE函数:
案例搜索功能:
参数
输入表达式
是使用简单CASE 格式计算的表达式。输入表达式是任何有效的Microsoft SQL Server 表达式。
WHENwhen_表达式
使用简单CASE 格式时input_expression 进行比较的简单表达式。 When_expression 是任何有效的SQL Server 表达式。 input_expression 和每个when_expression 必须具有相同的数据类型,或者进行隐式转换。
占位符,指示可以使用多个WHEN when_expression THEN result_expression 子句或WHEN Boolean_expression THEN result_expression 子句。
THEN 结果表达式
当input_expression=when_expression 计算结果为TRUE 或Boolean_expression 计算结果为TRUE 时返回的表达式。
结果表达式是任何有效的SQL Server 表达式。
ELSE else_结果_表达式
当比较运算的计算结果不是TRUE 时返回的表达式。如果省略此参数并且比较结果不是TRUE,则CASE 返回NULL 值。 Else_result_expression 是任何有效的SQL Server 表达式。 Else_result_expression 和所有result_expression 必须具有相同的数据类型,或者必须是隐式转换。
WHEN 布尔表达式
使用CASE 搜索格式时计算的布尔表达式。 Boolean_expression 是任何有效的布尔表达式。
结果类型
从result_expressions 和可选的else_result_expression 类型集中返回优先级最高的规则类型。有关详细信息,请参阅数据类型优先级。
结果值
简单的CASE函数:
计算input_expression,然后按指定顺序计算每个WHEN 子句的input_expression=when_expression。
返回第一个计算结果为TRUE 的result_expression (input_expression=when_expression)。
如果不存在计算结果为TRUE 的input_expression=when_expression,则当指定ELSE 子句时,SQL Server 将返回else_result_expression;如果未指定ELSE 子句,则返回NULL 值。
案例搜索功能:
按指定顺序计算每个WHEN 子句的Boolean_expression。
返回第一个计算结果为TRUE 的Boolean_expression 的result_expression。
如果不存在计算结果为TRUE 的Boolean_expression,则在指定ELSE 子句时SQL Server 将返回else_result_expression;如果未指定ELSE 子句,则返回NULL 值。
mysql case when语句的例子
A. 使用带有简单CASE 函数的SELECT 语句
在SELECT 语句中,简单的CASE 函数仅检查是否相等,不进行其他比较。
例如,使用CASE函数更改图书类别显示。
注意,我稍后尝试并禁用了category=。
我使用的代码是:
结果集:
B. 使用简单CASE功能和CASE搜索功能
选择语句
在SELECT 语句中,CASE 搜索功能允许根据比较值在结果集中替换值。
示例:根据书籍的价格范围将价格(金钱列)显示为文本注释。
结果集:
C. 将CASE 函数与SUBSTRING 和SELECT 结合使用
结果集:
CASE 可能是SQL 中最常被误用的关键字之一。
尽管此关键字之前可能已用于创建字段,但它还有更多用途。
例如,您可以在WHERE 子句中使用CASE。
首先我们看一下CASE的语法。在普通的SELECT 中,语法如下:
上面的代码中,尖括号内的内容需要替换为具体的参数。
例子:
这是CASE 的典型用法,但实际上您可以使用CASE 做更多事情。
假设以下GROUP BY 子句中的CASE:
您甚至可以通过添加ORDER BY 子句来组合这些选项,例如:
请注意,为了在GROUP BY 块中使用CASE,查询语句需要在GROUP BY 块中的SELECT 块中重复CASE 块。
除了选择自定义字段之外,CASE 在许多情况下都很有用。
如果你再深入一点,你还可以获得以前认为不可能的分组和排序结果集。
使用CASE WHEN 进行字符串替换处理
多个表达式
在SELECT 查询中使用CASE WHEN
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/119140.html
用户评论
熏染
之前一直不知道MySQL CASEE WHEN 这么方便,原来能根据条件灵活处理数据!这篇文章写的很详细,这下终于明白怎么用了,太赞了,以后写SQL查询一定用到这个
有7位网友表示赞同!
冷月花魂
看完这篇教程之后,感觉CASE WHEN 语句确实很强大啊,以前总是用IF ELSE 来实现,复杂起来还很容易出错。学习到了,分享给我的小伙伴们!
有13位网友表示赞同!
漫长の人生
我之前一直觉得MySQL的查询语句太简单了,没想到还有这么多技巧,比如CASE WHEN 就让我眼前一亮,可以做很多更精准的操作。点赞支持作者的文章!
有10位网友表示赞同!
灵魂摆渡人
这篇文章很实用,把CASE WHEN 语句的使用场景和常见问题都讲清楚了,图文并茂,非常适合入门学习的人。但是希望作者以后能再补充一些更进阶的使用案例
有20位网友表示赞同!
半世晨晓。
我正在尝试用CASE WHEN 来做一些数据分组的工作,这篇教程给了我很多启发。不过有时候不知道具体该怎么构造条件语句,可以多提供一些实例代码对比吧!
有9位网友表示赞同!
惯例
感觉这篇文章写的有点浅,没有对一些复杂情况下CASE WHEN 语句的使用进行深入讲解。比如多个层级的嵌套,或者更复杂的逻辑判断?
有7位网友表示赞同!
赋流云
我一直在用SQL开发应用程序,这个CASE WHEN 的用法以前没太留意过,看完这篇推荐的文章后终于知道应该怎么来使用它了。太方便! 以后可以写一些更复杂的操作逻辑了
有6位网友表示赞同!
柠夏初开
MySQL 的CASE WHEN 语句 really cool! 这篇文章内容很清晰易懂,图文结合让我更容易理解。比之前用 IF ELSE 写的代码简洁多了!
有13位网友表示赞同!
Edinburgh°南空
我对数据库管理了解不多,这篇教程讲解得还是比较容易接受的。但我希望可以加入一些更详细的部分,比如CASE WHEN 语句在实际开发中的应用场景?
有8位网友表示赞同!
无望的后半生
文章很好,CASE WHEN 语句介绍得很清楚。 但是希望作者能加上一些针对不同版本的MySQL的说明,因为语法细节可能会有变化吧!
有6位网友表示赞同!
肆忌
对于刚接触MySQL 的新手来说,这篇教程特别实用!简单易懂,将复杂的信息理清了,方便快速学习掌握CASE WHEN 语句的使用方法!
有14位网友表示赞同!
♂你那刺眼的温柔
虽然我理解CASE WHEN 语句的功能,但我还是觉得这篇文章缺乏实践案例。如果有更多例子来演示不同的使用场景,那就更棒了!
有19位网友表示赞同!
無極卍盜
文章写的不错,把CASE WHEN 的基本原理和使用方法都解释得很清楚,学习起来非常方便。但是希望再加入一些关于最佳实践的建议,比如如何优化 CASE WHEN 语句 的执行效率?
有12位网友表示赞同!
冷落了♂自己·
我之前一直用 IF ELSE 来处理数据比较像这种逻辑,这篇教程让我知道了CASE WHEN 真是更高效!以后就用这个了!
有6位网友表示赞同!
古巷青灯
文章内容很详细,从入门到进阶都涵盖了,对于想深入学习MySQL CASE WHEN 语句的人非常有用。不过希望能加入一些关于常见问题和错误处理的方法
有19位网友表示赞同!
歆久
我学习过CASE WHEN语句的一个局限性是它不支持嵌套超过一定的层数,这在某些复杂场景下会令人头疼。我希望作者能在这方面解释一下!
有12位网友表示赞同!
忘故
这篇教程介绍了MySQL CASE WHEN 语句的各种用法,讲解清晰易懂,很适合初学者学习。但是希望作者能加入一些更具体的代码示例和案例分析,更加直观地帮助读者理解
有9位网友表示赞同!
掉眼泪
这个CASE WHEN 语句真是一个非常强大的工具!有了它,写 sql 查询语句就轻松多了,文章也解释得很好,我受益匪浅!
有14位网友表示赞同!