Подтвердить что ты не робот

Есть ли причина, по которой min и max не работают с битовыми полями

Возможно, я что-то пропустил, но мне все еще кажется странным, почему невозможно использовать агрегаты max и min в полях бит. Поэтому, если я попытаюсь сделать что-то вроде этого:

declare @temp table (data bit)

insert into @temp
select 1 union all
select 0

select max(data) from @temp

Я получу ошибку Operand data type bit is invalid for max operator. Но если я сделаю что-то вроде этого:

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 знает, как сортировать поля бит. Но возможность заказывать данные означает, что мы можем получить максимум или минимум. Какова причина этого ограничения?

4b9b3361

Ответ 1

Если мы не сможем получить некоторую внутреннюю информацию от команды SQL Server, нам, возможно, придется согласиться с тем, что иногда ответ просто "потому что". Документация достаточно понятна, например, например, страница MSDN для MIN:

MIN может использоваться с числовыми, char, varchar, uniqueidentifier или datetime, но не с столбцами бит.

Моя догадка (да, я готов к тому, чтобы меня загорелись, чтобы рискнуть догадаться в ответ SO!) заключается в том, что преимущество не перевешивает риск изменения кода. Какова будет польза?

Вы не первый, чтобы спросить, но ответ на Совокупные функции в столбцах BIT: MIN и MAX в MS Connect говорят о том, что это маловероятно для изменения.