三级:sqlservercasewhen..else..end结果类型
![](http://www.onekao.net/templets/default/images/content_ad.gif)
这个问题源于csdn一贴子,后来发现sql server各版本对这个case when else end结果的处理不尽相同。
CASE语法如下:
/**//*
CASE input_expression
WHEN when_expression THEN result_expression
[ n ]
[
ELSE else_result_expression
]
END
Searched CASE function:
CASE
WHEN Boolean_expression THEN result_expression
[ n ]
[
ELSE else_result_expression
]
END
*/
联机文档有文:结果类型:从 result_expressions 和可选 else_result_expression 的类型集中返回优先级最高的类型。
有关详细信息,请参阅 数据类型优先级,如下
/**//*
SQL Server uses the following precedence order for data types:
1. user-defined data types (highest)
2. sql_varian t
3. xml
4. datetimeoffset
5. datetime2
6. datetime
7. smalldatetime
8. date
9. time
10. float
11. real
12. decimal
13. money #
14. smallmoney
15. bigint
16. int
17. smallint
18. tinyint
19. bit
20. ntext
21. text
22. image
23. timestamp
24. uniqueidentifier
25. nvarchar (including nvarchar(max) )
26. nchar
27. varchar (including varchar(max) )
28. char
29. varbinary (including varbinary(max) )
30. binary (lowest)
*/
#
#
#