将表列复制到另一个表并处理不接受Null的其他列

时间:2016-03-02 19:16:16

标签: sql-server

上半部分的答案来自here

INSERT INTO newAddressBook (newName, newSurname, Phone)
SELECT name, surname, number
FROM oldAddressBook

如果我按原样应用答案而没有修改,我会收到以下错误:

Cannot insert the value NULL into column 'Resident', table 'dbo.newAddressBook'; column does not allow nulls. INSERT fails.

我希望能够在将默认值false传递给原始表中没有匹配的列(Resident)时复制列,并且也不接受null。

3 个答案:

答案 0 :(得分:1)

以下是如何执行此操作的方法。由于Resident不允许null,因此您必须提供值。您可以使用文字值来执行此操作。

INSERT INTO newAddressBook (newName, newSurname, Phone, Resident)
SELECT name, surname, number, 'false'
FROM oldAddressBook

答案 1 :(得分:0)

给它一个CASE WHEN声明?

INSERT INTO newAddressBook (Resident)
SELECT (CASE WHEN Resident IS NOT NULL THEN Resident ELSE 'False' END)
FROM oldAddressBook

答案 2 :(得分:0)

INSERT INTO newAddressBook(Resident) 选择ISNULL(居民,'默认')作为居民 来自oldAddressBook

在上面的示例中,如果居民值为空,那么'默认' value将插入newAddressBook。