bigintInteger (whole number) data from -2^63 (-9223372036854775808) through 2^63-1 (9223372036854775807). Storage size is 8 bytes.intInteger (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647). Storage size is 4 bytes. The SQL-92 synonym for int is integer.smallintInteger data from -2^15 (-32,768) through 2^15 - 1 (32,767). Storage size is 2 bytes.tinyintInteger data from 0 through 255. Storage size is 1 byte.

解决方案 »

  1.   

    貌似我没说明白我不是要数据长度,我是要取得最大值和最小值联机丛书可以查到,sql2005里,tinyint 的取值范围是 0 to 255
    那tinyint这个数据类型那个的最大值就是255,最小值就是0有没有函数或者方法能取道这两个值呢?datalength:Returns the number of bytes used to represent any expression.
      

  2.   


    CASE WHEN DAY(Date) = 1 THEN ColA ELSE NULL END因为ColA本身可能为null,现在我想要区分出来是ColA本身为nullh还是这个语句产生的null,
    因此想写 CASE WHEN DAY(Date) = 1 THEN ColA ELSE 类型最大值 END
    因为有很多这样的语句,而ColA类型会很多,因此想要个函数而且用具体的数字硬编码到SQL中貌似也不好
      

  3.   

    要查可以用系统表systypes,得到物理所占字节数length,根据所占字节数来算大小
      

  4.   

    这个要写个函数,还挺麻烦的。
    比如datetime型的,占8个byte,但最小值是1900-1-1,最大值getdate()?
    还有其他各种类型……
    如果真有这个需求,建议专门弄个表,把常用的几种类型的最大值最小值存起来。
      

  5.   

    这个需要最大值吗?你用一个值来做标记就行了.
    CASE WHEN DAY(Date) = 1 THEN ISNULL(ColA,'????')  ELSE NULL  END 
      

  6.   


    关键就在这里了
    ColA的取值范围理论上没有限制的(实际的限制就是数据类型的取值范围)
    我找一个最大值或者最小值,是为了将这个????与实际值有冲突的机会减少到最低
    还有一个原因就是不想硬编码因为按这个写法,你的逻辑仍然区分不出来到底是ColA本身就是????还是isnull(ColA,'????')产生出来的????看来真的只能弄个表,再写个函数了to szx1999:
    datetime的最大值肯定不是getdate(),2005里最大值是9999-12-31
      

  7.   


    性能和程序可读性上的决策
    决定性能优先突然想起 ???? 可以 declare @MaxInt = 2,147,483,647
    貌似可读性也差不了多少多谢大家呵呵