【发布时间】:2018-01-06 20:26:27
【问题描述】:
我有一个 T-SQL 脚本,它返回表中的所有列,以及从 sys.columns 和 sys.types 获取的数据类型和最大值 MAX(DATALENGTH))。
但是对于 ints,最大值始终为 4,因为 ints 使用 4 个字节。在这种情况下,我宁愿使用列的最高数值。
我想我可能会更改我的查询以将DataLength 用于基于字符串的列,将MAX() 用于基于数字的列,但是在我到达那里之前遇到了一些问题:
缩小的示例代码
DECLARE @A bit = 1
SELECT CASE WHEN 1=1 THEN MAX(DATALENGTH(@A)) ELSE MAX(@A) END
鉴于1=1 为真,我希望收到数字 1。
相反,我得到一个错误
操作数数据类型位对 max 运算符无效。
我知道你不能运行MAX(@A),但这不是我想要做的。我的目标是根据数据类型运行不同的聚合函数。
我该如何解决这个问题?
【问题讨论】:
标签: database tsql aggregate-functions