Я использую временную таблицу для вставки данных, которые позже будут обновлены.

Например:

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
Internet Engineer 11 Май 2016 в 19:00

3 ответа

Лучший ответ

Согласно моему комментарию: вы можете сначала создать временную таблицу или заранее определить длину своего столбца.

SELECT
    Name, 
    Address, 
    CONVERT(VARCHAR(20),'') as LaterTobeUpdateField
INTO #MyTempTable
FROM OriginalTable;
2
paparazzo 11 Май 2016 в 16:13

Немного многословное, но безопасное решение:

declare @myTempTable(name varchar(50),
        address varchar(50),
        LaterTobeUpdateField varchar(20))
insert @myTempTable
select name, address, '' a from originalTable
--do whatever you want
1
Alex Kudryashev 11 Май 2016 в 17:13
SELECT 
    Name, 
    Address, 
    '' as LaterTobeUpdateField
INTO #MyTempTable
FROM OriginalTable

ALTER TABLE #MyTempTable
ALTER COLUMN LaterTobeUpdateField NVARCHAR(20)

UPDATE #MyTempTable
SET LaterTobeUpdateField = 'new text'
0
DaveX 11 Май 2016 в 16:16