SQLServer之Case用法
定义
计算条件列表,并返回多个可能的结果表达式之一。
表达式类型
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
示例
case搜索表达式
select
case
when boolean_expression then result_expression
when boolean_expression then result_expression
......
else else_result_expressionend end
from
databasename.dbo.tablename
示例
语法解析
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搜索函数的优点在于适用于所有比较(包括多值比较)的情况。
SQLServer之Case用法的更多相关文章
- sql case 用法总结
快下班了,抽点时间总结一下sql 的 case 用法. sql 里的case的作用: 用于计算条件列表的表达式,并返回可能的结果之一.sql 的case 类型于编程语言里的 if-esle if-el ...
- SQL进阶随笔--case用法(一)
SQL进阶一整个是根据我看了pdf版本的整理以及自己的见解整理.后期也方便我自己查看和复习. CASE 表达式 CASE 表达式是从 SQL-92 标准开始被引入的.可能因为它是相对较新的技术,所以尽 ...
- shell脚本学习之case用法及实例
case语句和判断语句[if...elif...else]功能类似;当在逻辑判断比较简单的情况下,比后者的代码量要少许多.case用法,用变量来匹配某值,如果匹配成功则执行它下面的命令,直到 ;;为止 ...
- Linux上case用法
Linux上case用法示例: #!/bin/bash # This is a script for test case ASK_COUNT=$ #从参数获取该变量的值 # if [ -z " ...
- shell脚本之case用法
你会经常发现自己在尝试计算一个变量的值,在一组可能的值中寻找特定值.在这种情形下, 你不得不写出很长的if-then-else语句,就像下面这样. $ cat test25.sh #!/bin/bas ...
- sqlserver中case when then用法
sql语句判断方法之一,Case具有两种格式,简单Case函数和Case搜索函数. --简单Case函数 (CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' E ...
- SQL进阶随笔--case用法(二)
---恢复内容开始--- 用 CHECK 约束定义多个列的条件关系 今天来说下check和case的用法.其实,CASE 表达式和 CHECK 约束是很般配的一对组合.也许有很多数据库工程师不怎么用 ...
- shell的case用法
今天给大家简单介绍一下结构条件语句的用法,实际上就是规范的多分支if语句,如下: case语法: case "字符串变量" in 值1)指令1... ;; 值2)指令2... ;; ...
- SQLServer 的case when语句使用实现统计
已知有表game_info 如下 date_info result_info 2018-2-4 win 2018-2-4 lose 2018-2-4 win 2018-2-4 lose 2018-2- ...
随机推荐
- Linux磁盘信息查询及删除文件操作
查询磁盘容量 $df -hl 删除文件固定行数 (1)删除第一行 $sed -i '1d' a.txt (2)删除指定行数 $sed -i '1,100d' a.txt 删除末尾行 $sed -i ' ...
- vuejs兄弟通信$emit和$on
1 vm.$on( event, callback ) 监听当前实例上的自定义事件.事件可以由vm.$emit触发.回调函数会接收所有传入事件触发函数的额外参数. 2 vm.$emit( even ...
- pycharm 使用Git提交代码到Github
pycharm 使用Git提交代码到Github pytharm 创建django项目,提交到github总是失败,在github创建项目拉下来后项目层级会多一层,为此查了一些资料,亲测如下方式可行. ...
- linux 广播和组播
广播和组播 广播,必须使用UDP协议,是只能在局域网内使用,指定接收端的IP为*.*.*.255后,发送的信息,局域网内的所有接受端就能够接到信息了. 广播的发送端代码 #include <st ...
- lua 的 cjson 安装,使用
1. 背景: 虚拟机安装的luajit 没有 cjson 库,就不能对 table 进行 编码操作,手动安装一个. 2. 安装: cjson下载地址:http://www.kyne.com.au/~ ...
- python--微信小程序“跳一跳‘外挂
参考网站:http://blog.csdn.net/LittleBeautiful/article/details/78955792 0x00:准备工具: Windows 10: 一个安卓真机 pyt ...
- 每天一道Rust-LeetCode(2019-06-05)
每天一道Rust-LeetCode(2019-06-05) 最长回文子串 坚持每天一道题,刷题学习Rust. 接续昨天,最长会问字符串的另一种解法 题目描述 解题过程 //leetcode最快解法 / ...
- 基于OpenVINO的多输入model optimizer(Tensorflow)
Step I:下载预训练模型 wget -O - https://github.com/mozilla/DeepSpeech/releases/download/v0.3.0/deepspeech-0 ...
- Linux学习笔记-第1天(补发)- 新的开始
本来不打算补发第一天的笔记,第一天讲的内容并不多,且大部分内容都是书本上已有的,就没有写多少笔记. 其实在学习的过程中我挺好奇其它同学各种千奇百怪的问题.想法是怎么来的,我怎么想不出来这些.或许这就是 ...
- linux下python解释器的sys.path路径如何添加
一. 使用pycharm时, pycharm会自动把我们新建的每个项目都加入到sys.path路径中, 我们在使用过程中根本不涉及 项目路径的处理, 但是当项目部署到linux上时, 问题就来了, l ...