2013-06-11 2 views
2

Я экспериментирую с временными таблицами и сталкиваюсь с проблемой.Ошибка преобразования с столбцом NULL и SELECT INTO

Вот некоторые супер-упрощенный код, что я пытаюсь выполнить:

IF(Object_ID('tempdb..#TempTroubleTable') IS NOT NULL) DROP TABLE #TempTroubleTable 

select 'Hello' as Greeting, 
    NULL as Name 
into #TempTroubleTable 

update #TempTroubleTable 
set Name = 'Monkey' 
WHERE Greeting = 'Hello' 


select * from #TempTroubleTable 

При попытке оператора обновления, я получаю ошибку:

Conversion failed when converting the varchar value 'Monkey' to data type int.

Я могу понять, почему температура таблица может не ожидать, что я заполню этот столбец varchars, но почему он принимает int? Есть ли способ, которым я могу перенести столбец, чтобы ожидать varchar (max), но все же инициализировать его с помощью NULL?

+2

'NULL' по умолчанию для' INT'. Вы можете увидеть это с помощью 'EXEC tempdb..sp_help '#TempTroubleTable';' –

ответ

3

Вы должны бросить нуль в тип данных, поскольку по умолчанию Сво Int

Select 'hello' as greeting, 
      Cast (null as varchar (32)) as name 
Into #temp 
+0

Работает как очарование! Я не понимал, что вы можете использовать нуль как нечто другое. Благодаря! – MadHenchbot

Смежные вопросы