답변

3

네, 그게 올바른 방법입니다. isnull 함수를 사용하면 값을 반환해야하는 식을 만들 수 있습니다. 이 값은 SQL Server에서 계산 열로 계산됩니다 (not null).

2

나는 ANSI 표준 COALESCE 함수를 선호하지만, ISNULL이 좋다. 뭔가에게 새로운 일상을 알아

COALESCE(dbo.fn_GetPrice(ItemId), 0) 

편집 :로 COALESCE를 사용하려면 계산 열을 정의합니다. 나는 다음과 같은 한 :

create table t (c1 int null 
    , c2 as isnull(c1, 1) 
    , c3 as isnull(c1, null) 
    , c4 as coalesce(c1, 1) 
    , c5 as coalesce(c1, null) 
    ) 

exec sp_help t 

그리고 C2는 sp_help는에 따라 참으로 널 (NULL)이 아니라 C4는 표현이 null 값이 발생할 수 병합 방법이 없다하더라도, 널 (NULL)로보고됩니다.

또한 2008 년, 나는이 옵션은 2005 년에 존재하는지, 하나는 계산 열을 지속 할 수 알고 제약 조건을 추가하지 않습니다 제약 조건 위반에

create table t (c1 int null 
    , c2 as isnull(c1, 1) persisted not null 
    , c3 as isnull(c1, null) persisted not null 
    , c4 as coalesce(c1, 1) persisted not null 
    , c5 as coalesce(c1, null) persisted not null 
    ) 
go 
insert into t (c1) values (null) 

결과를.

+1

Woops! 나는 COALESCE 또한 COALESCE (NULL, NULL)이 될 수 있기 때문에 계산 된 열이 nullable이되지 않는다는 것을 알아 냈습니다. 즉 null이 아닌 결과가 보장되지 않았기 때문에 ISNULL이 유일한 옵션이라고 생각합니다. 당신을 괴롭히는 것에 대해 유감스럽게 생각합니다. 방금 찾은 바에는 이미 DB를 몇 군데 변경했습니다 ... – Shimmy

관련 문제