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.
那tinyint这个数据类型那个的最大值就是255,最小值就是0有没有函数或者方法能取道这两个值呢?datalength:Returns the number of bytes used to represent any expression.
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中貌似也不好
比如datetime型的,占8个byte,但最小值是1900-1-1,最大值getdate()?
还有其他各种类型……
如果真有这个需求,建议专门弄个表,把常用的几种类型的最大值最小值存起来。
CASE WHEN DAY(Date) = 1 THEN ISNULL(ColA,'????') ELSE NULL END
关键就在这里了
ColA的取值范围理论上没有限制的(实际的限制就是数据类型的取值范围)
我找一个最大值或者最小值,是为了将这个????与实际值有冲突的机会减少到最低
还有一个原因就是不想硬编码因为按这个写法,你的逻辑仍然区分不出来到底是ColA本身就是????还是isnull(ColA,'????')产生出来的????看来真的只能弄个表,再写个函数了to szx1999:
datetime的最大值肯定不是getdate(),2005里最大值是9999-12-31
性能和程序可读性上的决策
决定性能优先突然想起 ???? 可以 declare @MaxInt = 2,147,483,647
貌似可读性也差不了多少多谢大家呵呵