sql – 有什么理由,最小和最大不能在位字段上工作

前端之家收集整理的这篇文章主要介绍了sql – 有什么理由,最小和最大不能在位字段上工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
可能我错过了一些东西,但是对于我来说,仍然看起来很奇怪,为什么不可能在位字段上使用max和min聚合.所以如果我尝试做这样的事情:
declare @temp table (data bit)

insert into @temp
select 1 union all
select 0

select max(data) from @temp

我会得到一个错误操作数数据类型位对于最大运算符无效.但是如果我这样做:

declare @temp table (data bit)

insert into @temp
select 1 union all
select 0

select top 1 * from @temp order by data desc

它工作正常,所以sql Server确实知道如何排序位字段.但是订购数据的可能性意味着我们可以获得最大或最小值.
那么这个限制背后的原因是什么呢?

解决方法

除非我们可以从sql Server团队获取一些内部信息,否则我们可能必须接受,有时候答案只是“因为”.文档很清楚,例如 MIN状态的MSDN页面;

MIN can be used with numeric,char,varchar,uniqueidentifier,or
datetime columns,but not with bit columns.

我的猜测(是的,我准备好燃烧,因为在SO答案中冒犯了一个猜测),这个好处并不超过代码更改的风险.有什么好处呢?

您不是第一个要求的,但是MS Connect上的Aggregate functions on BIT columns: MIN and MAX的回应表明它不太可能改变.

原文链接:https://www.f2er.com/mssql/81665.html

猜你在找的MsSQL相关文章