SQL Server 中的case when then else 中的结果类型

本文详细介绍了SQL CASE语句的使用方法,包括CASE、WHEN、THEN、ELSE及END关键字的功能,通过实例展示了如何根据不同的条件进行数据转换,并讨论了CASE语句的返回类型与数据长度的影响。

--case后面是条件when后面是条件为什么,then后面结果,最后显示的是结果那一列,如
select
case id when '3' then 'one' ELSE id end
from @T
并且一定要有 end 或者是else 什么 end

declare @T Table (id char(10))
insert into @T select '1'
insert into @T select '2'
insert into @T select '3'

select * from @T
--@T为表变量

----开始测试
--select
-- case id
--  when '3' then cast('' as char(10))
--  else id
-- end as Id,
--    SQL_VARIANT_PROPERTY((case id
--  when '3' then cast('' as char(10))
--  else id
-- end ),'BaseType') as CaseResultType,
-- case id when '3' then DataLength(cast('' as char(10))) else DataLength(id) end as IDDataLength
--from @T
----显示指定结果为char类型,长度为10,可以看到case后的result类型为char,没有变化。

--select
-- case id
--  when '3' then '' else id end as ID,
-- SQL_VARIANT_PROPERTY((case id when '3' then '' else id end),'BaseType') as CaseResultType,
-- case id when '3' then DataLength('') else DataLength(id) end as IDDataLength
--from @T
----不显示指定类型,那么'' 为varchar型,case的result类型优先级varchar由于char,结果显示result类型为varchar

 select
 case id
  when '3' then 4 else id end as ID,
 SQL_VARIANT_PROPERTY((case id when '3' then 4 else id end),'BaseType') as CaseResultType,
 case id when '3' then DataLength(4) else DataLength(id) end as IDDataLength
from @T
--显示的结果可以看出,case的result类型为int型,但存储大小不全为4

 

代码可以直接运行,在sql server 2005 express版里面

转载于:https://www.cnblogs.com/chenwancoco/archive/2011/10/12/2208169.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值