Sql server 插入临时表,然后更新

Sql server 插入临时表,然后更新,sql-server,tsql,Sql Server,Tsql,我使用一个临时表来插入稍后将更新的数据 例如: SELECT Name, Address, '' as LaterTobeUpdateField INTO #MyTempTable FROM OriginalTable 然后我更新临时表 UPDATE #MyTempTable SET LaterTobeUpdateField = 'new text' 由于LaterTobeUpdateField的原始值为“”,因此在更新过程中,我将得到以下错误: 字符串或二进制

我使用一个临时表来插入稍后将更新的数据

例如:

SELECT 
    Name, 
    Address, 
    '' as LaterTobeUpdateField
INTO #MyTempTable
FROM OriginalTable
然后我更新临时表

UPDATE #MyTempTable
SET LaterTobeUpdateField = 'new text'
由于LaterTobeUpdateField的原始值为“”,因此在更新过程中,我将得到以下错误:

字符串或二进制数据将被截断

除了在使用临时表之前声明临时表之外,还有其他解决方法吗

这也行,但很难看

SELECT
    Name, 
    Address, 
    '             ' as LaterTobeUpdateField
INTO #MyTempTable
FROM OriginalTable

根据我的评论:您可以先创建临时表,或者预先定义列的长度

SELECT
    Name, 
    Address, 
    CONVERT(VARCHAR(20),'') as LaterTobeUpdateField
INTO #MyTempTable
FROM OriginalTable;

根据我的评论:您可以先创建临时表,或者预先定义列的长度

SELECT
    Name, 
    Address, 
    CONVERT(VARCHAR(20),'') as LaterTobeUpdateField
INTO #MyTempTable
FROM OriginalTable;

有点罗嗦但安全的解决方案:

declare @myTempTable(name varchar(50),
        address varchar(50),
        LaterTobeUpdateField varchar(20))
insert @myTempTable
select name, address, '' a from originalTable
--do whatever you want

有点罗嗦但安全的解决方案:

declare @myTempTable(name varchar(50),
        address varchar(50),
        LaterTobeUpdateField varchar(20))
insert @myTempTable
select name, address, '' a from originalTable
--do whatever you want

无论是您的操作方式,首先创建临时表,还是预先定义列的长度:
选择Name、Address、CONVERT(VARCHAR(20),“”)作为latertoUpdate字段
都可以,post和我将选择您的操作方式作为解决方案,首先创建临时表或预先定义列的长度:
选择Name、Address、CONVERT(VARCHAR(20),“”)as latertToBeUpdateField
如果有效,post和我将选择作为解决方案