关于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(最低)

SQLServer数据类型优先级对性能的影响

译自: http://www.mssqltips.com/sqlservertip/2749/sql-server-data-type-precedence/?utm_source=dailynew...
  • DBA_Huangzj
  • DBA_Huangzj
  • 2012年08月19日 14:35
  • 7560

sql server各个数据类型的优先级

当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型转换为优先级较高的数据类型。如果此转换不是所支持的隐式转换,则返回错误。当两个操作数表达式具有相同的数据类型时,运...
  • yubofighting
  • yubofighting
  • 2011年11月05日 13:50
  • 778

c语言运算符优先顺序一览表

c语言运算符优先顺序一览表
  • estrs_k
  • estrs_k
  • 2017年06月24日 22:45
  • 375

T-SQL 数据类型的优先顺序

数据类型的优先顺序当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是所支持的固有转换,则返回...
  • centver
  • centver
  • 2001年05月03日 21:57
  • 811

数据类型的优先顺序(SQLSERVER)----

     当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是所支持的固有转换,则返回错误。当...
  • netdevgirl
  • netdevgirl
  • 2009年02月05日 13:52
  • 538

矩阵的存储优先顺序

计算机存储空间是先后有序的,如何存储A[m*n]的m*n个元素是个问题,一般有两种: 1、按行优先存储 : 存成a11,a12,...,amn的顺序。       PASCAL, C/C++,,...
  • zh13544539220
  • zh13544539220
  • 2015年03月25日 11:48
  • 676

AND的优先顺序高于OR的优先顺序

AND的优先顺序高于OR的优先顺序
  • sirius_1980
  • sirius_1980
  • 2009年04月01日 17:35
  • 198

高位优先的字符串排序

#include #include #include //MSD(Most Significant Digit First) 高位优先的字符串排序 //该算法基于键索引计数法的思想,进行了扩...
  • liujianfeng1984
  • liujianfeng1984
  • 2015年09月16日 07:45
  • 1101

Java学习之三种代码块优先使用顺序

1.构造块优先于构造方法执行,且执行多次。只要一有实例化对象产生,就执行构造块中的内容。 2.静态块优先于主方法执行,如果在普通类中定义的静态块,优先于构造块执行,不管有多少实例化对象产生,静态代码...
  • Freshman_
  • Freshman_
  • 2015年03月22日 22:19
  • 421

java之字符串的排序

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有的字符串abc,acb,bac,bca,cab,cba。 分析:首先,求所有可能...
  • qq_27291877
  • qq_27291877
  • 2015年07月14日 11:08
  • 206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于SQL数据类型的优先顺序
举报原因:
原因补充:

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