关于SQL数据类型的优先顺序

原创 2012年03月29日 09:26:51

 在写CASE WHEN THEN语句时,遇到一个转化错误问题,如下:


库中的status为A,使用语句:

SELECT a=(CASE WHEN Status='A'  THEN   'A'   ELSE GETDATE() END) FROM dbo.DeliveryDelayMessage

数据库返回错误信息:Conversion failed when converting date and/or time from character string.

而如果改变下顺序:

SELECT a=(CASE WHEN Status='A' THEN   GETDATE()  ELSE  'A' end) FROM dbo.DeliveryDelayMessage

数据正确并返回日期。


结果为什么会被转化为日期型?如果结果列表是数字和日期,则没有转化错误?查其原因,SQL中的数据类型是有优先顺序的,相关资料如下:


数据类型的优先顺序

当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是所支持的固有转换,则返回错误。当两个操作数表达式有相同的数据类型时,运算的结果就为那种数据类型。

下面是 Microsoft® SQL Server™ 2000 数据类型的优先顺序:

  1. sql_variant(最高)

  2. datetime

  3. smalldatetime

  4. float

  5. real

  6. decimal

  7. money

  8. smallmoney

  9. bigint

  10. int

  11. smallint

  12. tinyint

  13. bit

  14. ntext

  15. text

  16. image

  17. timestamp

  18. uniqueidentifier

  19. nvarchar

  20. nchar

  21. varchar

  22. char

  23. varbinary

  24. binary(最低)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SQL2005 数据类型

  • 2012-04-11 20:09
  • 44KB
  • 下载

c语言基础-变量、基础数据类型、关系运算符、顺序/条件/循环

 -变量&基础数据类型 长整型 long 占位符为 %ld,整型 int 占位符为 %d,通过 sizeof 函数计算 long 与 int 所占据的存储空间大小,可确定该计算机编译器位数; ...

SQL_Server_数据类型详解

  • 2011-03-25 15:44
  • 43KB
  • 下载

Erlang顺序编程之一 数据类型

Erlang初识

SQL Server 2005数据类型char,varchar,text ,nchar,nvarchar,ntext 等学习拾遗

在数据库设计时我们常常为数据类型而烦恼,但是当你熟悉了之后就不再烦恼了,看看吧,看看对你有没有帮助。 char,varchar,text ,nchar,nvarchar,ntext 等学习拾遗,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)