上半部分的答案来自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。
答案 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。