계산 된 열을 무일치하지 않게 만드는 방법은 무엇입니까?
-
20-09-2019 - |
문제
지금까지 나는 사용하고 있습니다 ISNULL(dbo.fn_GetPrice(ItemId), 0)
무효가되지 않도록하기 위해 (오히려 기본값이라고 부르지 만 무엇이든이라고합니다).
이것이 올바른 방법입니까?
해결책
예, 그것이 올바른 방법입니다. 사용함으로써 isnull
함수 당신은 무엇이든 상관없이 값을 반환 해야하는 표현식을 만들고 있습니다. 이것은 SQL Server에 의해 계산 된 열로 평가됩니다. not null
.
다른 팁
ANSI 표준 Coalesce 기능을 선호하지만 IsNull은 괜찮습니다. Coalesce를 사용하려면 계산 된 열을 다음과 같이 정의하십시오.
COALESCE(dbo.fn_GetPrice(ItemId), 0)
편집하다 매일 새로운 것을 배우십시오. 나는 다음을했다 :
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
SP_HELP에 따르면 C2는 실제로 무효가되지 않지만, C4는 널 값을 늘릴 수있는 방법이 없지만 C4는 무효가 될 수있는 것으로보고된다.
또한 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)
제약 조건 위반이 발생합니다.
제휴하지 않습니다 StackOverflow