插入语句检查为 NULL SQL Server 2008
Insert Statement Check Is NULL SQL Server 2008
我的小 SQL 查询只是将数据从旧数据库导入新数据库。我的新数据库不允许 ProjectNo
、ProjectName
或 LeaderID
成为 NULL
值,因此我的代码需要检查该值是否为 NULL
以及是否就是,给ProjectName
和LeaderID
加上默认值(ProjectNo
是旧的table的主键,所以不能是NULL
)。
据我所知,我已经正确地编写了 case 语句,但我不断收到以下错误:
Cannot insert the value NULL into column 'ProjectName', table
'ERP.dbo.Project'; column does not allow nulls. INSERT fails.
我也在使用 SQL Server 2008
INSERT INTO [ERP].[dbo].[Project] ([ProjectID], [ProjectName], [LeaderID])
SELECT
ProjectNo,
CASE
WHEN ProjectName IS NULL THEN 'Unknown'
END,
CASE
WHEN ProjectLeaderID IS NULL THEN 1
END
FROM
Multitech.dbo.Projects
GO
使用ISNULL
INSERT INTO [ERP].[dbo].[Project]
([ProjectID]
,[ProjectName]
,[LeaderID])
SELECT ProjectNo,
ISNULL(ProjectName, 'Unknown'),
ISNULL(ProjectLeaderID, 1)
FROM Multitech.dbo.Projects
添加缺少的 ELSE,您的代码也可以正常工作。 CASE documentation
ELSE else_result_expression
Is the expression returned if no comparison operation evaluates to TRUE. If this argument is omitted and no comparison operation evaluates to TRUE, CASE returns NULL. else_result_expression is any valid expression.
INSERT INTO [ERP].[dbo].[Project]
([ProjectID]
,[ProjectName]
,[LeaderID])
SELECT ProjectNo,
CASE WHEN ProjectName IS NULL THEN 'Unknown' ELSE ProjectName END,
CASE WHEN ProjectLeaderID IS NULL THEN 1 ELSE ProjectLeaderID END
FROM Multitech.dbo.Projects
我的小 SQL 查询只是将数据从旧数据库导入新数据库。我的新数据库不允许 ProjectNo
、ProjectName
或 LeaderID
成为 NULL
值,因此我的代码需要检查该值是否为 NULL
以及是否就是,给ProjectName
和LeaderID
加上默认值(ProjectNo
是旧的table的主键,所以不能是NULL
)。
据我所知,我已经正确地编写了 case 语句,但我不断收到以下错误:
Cannot insert the value NULL into column 'ProjectName', table 'ERP.dbo.Project'; column does not allow nulls. INSERT fails.
我也在使用 SQL Server 2008
INSERT INTO [ERP].[dbo].[Project] ([ProjectID], [ProjectName], [LeaderID])
SELECT
ProjectNo,
CASE
WHEN ProjectName IS NULL THEN 'Unknown'
END,
CASE
WHEN ProjectLeaderID IS NULL THEN 1
END
FROM
Multitech.dbo.Projects
GO
使用ISNULL
INSERT INTO [ERP].[dbo].[Project]
([ProjectID]
,[ProjectName]
,[LeaderID])
SELECT ProjectNo,
ISNULL(ProjectName, 'Unknown'),
ISNULL(ProjectLeaderID, 1)
FROM Multitech.dbo.Projects
添加缺少的 ELSE,您的代码也可以正常工作。 CASE documentation
ELSE else_result_expression
Is the expression returned if no comparison operation evaluates to TRUE. If this argument is omitted and no comparison operation evaluates to TRUE, CASE returns NULL. else_result_expression is any valid expression.
INSERT INTO [ERP].[dbo].[Project]
([ProjectID]
,[ProjectName]
,[LeaderID])
SELECT ProjectNo,
CASE WHEN ProjectName IS NULL THEN 'Unknown' ELSE ProjectName END,
CASE WHEN ProjectLeaderID IS NULL THEN 1 ELSE ProjectLeaderID END
FROM Multitech.dbo.Projects