Каждый вычисляемый / основанный на функции столбец в представлении выглядит обнуляемым.Например:
create view v1
as
select OBJECT_ID,OBJECT_ID * 1 as obj2 from sys.objects
go
EXEC sp_help 'v1'
Обозначает, что object_id
не обнуляемо, а obj2
, хотя тривиально наблюдаемо, что, если object_id
никогда не может быть нулевым, или obj2
.
Единственный способ, которым я знаю (не уверен, действительно ли это то, что вам нужно), заставить столбец выглядеть не обнуляемым, - это обернуть его в ISNULL
:
create view v2
as
select OBJECT_ID,ISNULL(OBJECT_ID * 1,0) as obj2 from sys.objects
go
EXEC sp_help 'v2'
Интересно, что это одно из немногих мест, где вы не можете использовать COALESCE
вместо ISNULL
:
create view v3
as
select OBJECT_ID,COALESCE(OBJECT_ID * 1,0) as obj2 from sys.objects
go
EXEC sp_help 'v3'
v3
напоминает v1
.