INSERT INTO导致列中的空值

时间:2017-12-11 18:39:52

标签: sql sql-server

我尝试连接两个列,并在SQL Server 2014中添加逗号和空格。

以下是我使用的代码(出于隐私原因而修改表名)

INSERT INTO Table (EntityName)
    SELECT CONCAT(MailingLine1, ', ', MailingState) 
    FROM Table

这是正确连接字符串,但在此过程中,它会导致所有其他列和所有其他行读取为NULL并从表中擦除数据。

大约有30列已经包含数据

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果您要使用此函数CONCAT(MailingLine1, ', ', MailingState)添加新列,以便可以使用计算列

--if [EnityName]  already exists in the table you have to drop it first
alter table TABLE
drop column [EntityName]

alter table TABLE
add [EntityName] as CONCAT(MailingLine1, ', ', MailingState)

如果您不想添加计算列,可以关注@GordonLinoff回答(使用UPDATE命令)

否则,如果您要插入新行而不更新行,问题是您只在EntityName列中插入值并忽略所有其他列,您可以将值指定为以下 (假设你有3列)

Insert into Table (EntityName,EntityName2,EntityName3)

SELECT CONCAT(MailingLine1, ', ', MailingState),Value1,Value2 FROM Table

其中Value1,Value2可以是表中的列,或者是固定值,即。 'John'

答案 1 :(得分:0)

为其他volums设置默认值,非NULL值。 (见例)

ALTER TABLE {table_name} ADD DEFAULT {dafault_value} FOR {column_name}

答案 2 :(得分:0)

我猜你想要update,而不是insert

update Table
    set EntityName = CONCAT(MailingLine1, ', ', MailingState);