插入临时表然后更新

时间:2016-05-11 16:00:49

标签: 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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

一个小而安全的解决方案:

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

答案 2 :(得分:0)

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

ALTER TABLE #MyTempTable
ALTER COLUMN LaterTobeUpdateField NVARCHAR(20)

UPDATE #MyTempTable
SET LaterTobeUpdateField = 'new text'