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的情况很可能判断不出来!!

 

目录
相关文章
|
7月前
|
SQL 存储 数据库
sql数据库中的 delete 与drop的区别
sql数据库中的 delete 与drop的区别
170 1
|
6月前
|
SQL Java 数据库连接
MyBatis之动态SQL、#与$的区别和结果映射
MyBatis之动态SQL、#与$的区别和结果映射
62 0
|
6月前
|
SQL 安全 Java
Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)
Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)
27 0
|
6月前
|
SQL 数据库 数据安全/隐私保护
SAP CDS view 定义的数据库视图和传统 SQL 语句定义视图的区别
SAP CDS view 定义的数据库视图和传统 SQL 语句定义视图的区别
73 0
|
4月前
|
SQL Java 数据库连接
util包和sql包里的Date类区别,该用哪一个?
util包和sql包里的Date类区别,该用哪一个?
29 0
|
6月前
|
SQL
07SQL - letf join 和 inner join 的 区别
07SQL - letf join 和 inner join 的 区别
28 0
|
7月前
|
SQL XML Java
MyBatis的场景应用(动态SQL、模糊查询及映射结果)附(Mybatis中#和$的区别)2
MyBatis的场景应用(动态SQL、模糊查询及映射结果)附(Mybatis中#和$的区别)2
51 0
|
7月前
|
SQL Java 数据库连接
MyBatis的场景应用(动态SQL、模糊查询及映射结果)附(Mybatis中#和$的区别)1
MyBatis的场景应用(动态SQL、模糊查询及映射结果)附(Mybatis中#和$的区别)1
101 0
|
7月前
|
SQL Java 数据库连接
【MyBatis】动态SQL > 重点:${...}和#{...}与resultMap和resultType的区别
【MyBatis】动态SQL > 重点:${...}和#{...}与resultMap和resultType的区别
88 0
|
8月前
|
SQL Oracle 关系型数据库
sql中sysdate 和 current_date 的区别及to_char( tv_date, ‘YYYY-MM-DD‘)当天时间与数据库时间的格式转换与比较
在oracle中current_date与sysdate都是显示当前系统时间, 其结果基本相同,但是有三点区别: 1. current_date返回的是当前会话时间,而sysdate返回的是服务器时间; 2. current_date有时比sysdate快一秒,这可能是四舍五入的结果; 3. 如果修改当前会话的时区,比如将中国的时区为东八区,修改为东九区,则current_date显示的时间为东九区时间, 根据东加西减的原则,current_date应该比sysdate快一小时。
400 0
sql中sysdate 和 current_date 的区别及to_char( tv_date, ‘YYYY-MM-DD‘)当天时间与数据库时间的格式转换与比较