设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1682|回复: 0

SQLServer之Case用法

[复制链接]

14

主题

293

金钱

373

积分

入门用户

发表于 2019-8-2 16:00:40 | 显示全部楼层 |阅读模式

定义
计算条件列表,并返回多个可能的结果表达式之一。

表达式类型
case具有两种格式:

简单case表达式,它通过将表达式与一组简单的表达式进行比较来确定结果。
case搜索表达式,它通过计算一组布尔表达式来确定结果。
这两种方式,都支持可选的 else参数,大部分情况下是可以实现相同的功能。

case可用于允许使用有效表达式的任意语句或子句, 例如,可以在 select、update、delete和 set等语句以及 select_list、in、where、order by和 having等子句中使用 Case。


语法
简单case表达式
select
case input_expression
when when_expression then result_expression
when when_expression then result_expression
......
else else_result_expressionend
from
databasename.dbo.tablename

示例
1.png



case搜索表达式
select
case
when boolean_expression then result_expression
when boolean_expression then result_expression
......
else else_result_expressionend end
from
databasename.dbo.tablename

示例
2.png

语法解析
input_expression
使用简单 case格式时计算的表达式。 input_expression 是任何有效的表达式 。
when when_expression
使用简单 case格式时要与 input_expression 进行比较的简单表达式 。 when_expression 是任何有效的表达式 。input_expression 及每个 when_expression 的数据类型必须相同或必须是隐式转换的数据类型 。
then result_expression
当 input_expression = when_expression 的计算结果为 true时,或 boolean_expression 的计算结果为 true时返回的表达式 。 result expression 是任何有效的表达式 。
else else_result_expression
比较运算计算结果不为 true 时返回的表达式。 如果忽略此参数且比较运算计算结果不为 true,则 case返回 null。 else_result_expression 是任何有效的表达式 。 else_result_expression 及任何 result_expression 的数据类型必须相同或必须是隐式转换的数据类型 。
when boolean_expression
使用 case 搜索格式时所计算的布尔表达式。 boolean_expression 是任何有效的布尔表达式 。

返回类型
从 result_expressions 和可选 else_result_expression 的类型集中返回优先级最高的类型 。

返回值
case 简单表达式:

case 简单表达式的工作方式如下:将第一个表达式与每个 when 子句中的表达式进行比较,以确定它们是否等效。 如果这些表达式等效,将返回 then 子句中的表达式。

仅用于等同性检查。
按指定的顺序计算每个 when 子句的 input_expression = when_expression。
返回首个 input_expression = when_expression 的计算结果为 true 的
result_expression 。
如果 input_expression = when_expression 的计算结果均不为 true,则在指定了 else
子句的情况下,SQLServer数据库引擎将返回 else_result_expression;若没有指定 else 子句,则返回
null 值 。
case 搜索表达式:

按指定顺序对每个 when 子句的 boolean_expression 进行计算 。
返回首个 boolean_expression 的计算结果为 true 的 result_expression 。
如果 boolean_expression 的计算结果均不为 true,则在指定了 else 子句的情况下,数据库引擎将返回
else_result_expression;若没有指定 else 子句,则返回 null 值 。

优缺点
简单case函数注重简洁,但是它只适用于这种单字段的单值比较,而case搜索函数的优点在于适用于所有比较(包括多值比较)的情况。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表