T-SQL中case语句的两种写法及区别

简介: T-SQL中的case语句相信大家一定不陌生,但是它有2种写法,如下: 写法一: case 变量       when 值1 then..       when 值2 then..       else .

T-SQL中的case语句相信大家一定不陌生,但是它有2种写法,如下:

写法一:

case 变量
      when 值1 then..
      when 值2 then..
      else ..
end
 
写法二:

case
      when 逻辑表达式 then
      -- true的情况
      else
      -- false的情况
end

 

如果是二叉分支,笔者建议写法二

因为,如果遇到null的情况,则必须使用写法二!!

 

 举个联合更新的例子

场景:把表一中某个日期根据情况更新成加上表二中另外一个日期,如果表二中的日期没有,则

加上默认值1。

如下:

 

1  update  a
2    set  a.field3  =   dateadd ( year case   when  b.field2  is   null   then   1   else  b.field2    end , a.field1)
3  from  table1 a  inner   join  table2 b
4  on  a.ID  =  b.ID
5  where   -- other conditions

 

以上该情况,如果使用写法一,null的情况很可能判断不出来!!

 

目录
相关文章
|
SQL 存储 数据库
sql数据库中的 delete 与drop的区别
sql数据库中的 delete 与drop的区别
965 1
|
SQL Java 数据库连接
MyBatis之动态SQL、#与$的区别和结果映射
MyBatis之动态SQL、#与$的区别和结果映射
310 0
|
SQL 安全 Java
Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)
Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)
184 0
|
SQL 存储 NoSQL
. NoSQL和SQL的区别、使用场景与选型比较
【7月更文挑战第30天】. NoSQL和SQL的区别、使用场景与选型比较
504 15
|
SQL 数据挖掘
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之odps.sql.mapper.split.size和odps.stage.mapper.split.size这两个参数的区别是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
SQL Java 数据库连接
|
SQL 存储 数据处理
实时计算 Flink版产品使用合集之flink-connector-mysql-cdc 和 flink-sql-connector-mysql-cdc有什么区别
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
809 1
|
SQL Java 数据库连接
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
417 0