NULL列和SELECT INTO的转换错误

时间:2013-06-11 00:05:05

标签: sql-server-2008 temp-tables

我正在试验临时表并遇到问题。

这是我正在努力实现的一些超简化代码:

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

尝试更新语句后,出现错误:

  

将varchar值'Monkey'转换为数据类型int时转换失败。

我可以理解为什么临时表可能不会指望我用varchars填充该列,但为什么它假设为int?有没有一种方法可以使列期望varchar(max),但仍然用NULL初始化它?

1 个答案:

答案 0 :(得分:3)

您需要将null转换为数据类型,因为默认情况下它是一个int

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