加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:38:13 所属栏目:MsSql教程 来源:网络整理
导读:可能我错过了一些东西,但是对于我来说,仍然看起来很奇怪,为什么不可能在位字段上使用max和min聚合.所以如果我尝试做这样的事情: declare @temp table (data bit)insert into @tempselect 1 union allselect 0select max(data) from @temp 我会得到一个错误操
可能我错过了一些东西,但是对于我来说,仍然看起来很奇怪,为什么不可能在位字段上使用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的回应表明它不太可能改变.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读