akh*_*hil 8 sql-server sql-server-2008-r2 computed-column
在下表中,您如何避免除以零错误?
CREATE TABLE [dbo].[TblDivision]
(
[Numerator] int NOT NULL,
[Denominator] int NOT NULL,
[Result] AS (Numerator/ Denominator)
)
GO
Insert into (Numerator, Denominator) TblDivision values (3,0)
GO
Run Code Online (Sandbox Code Playgroud)
Phi*_*lᵀᴹ 12
只需添加一个除以 0 的特殊情况:
CREATE TABLE [dbo].[TblDivision]
(
[Numerator] int NOT NULL,
[Denominator] int NOT NULL,
[Result] AS case when Denominator=0 then 0 else (Numerator/ Denominator) end
);
Run Code Online (Sandbox Code Playgroud)
Len*_*art 10
类似于@Phil 的解决方案:
CREATE TABLE dbo.TblDivision
( Numerator int NOT NULL
, Denominator int NOT NULL
, Result AS Numerator / nullif(Denominator,0)
);
Run Code Online (Sandbox Code Playgroud)
如果分母为 0,则它通过 nullif 映射到 null。由于除以 null 的任何内容都是 null,因此在这种情况下结果变为 null。