我使用临时表来插入稍后会更新的数据。
例如:
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
答案 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'