我正在试验临时表并遇到问题。
这是我正在努力实现的一些超简化代码:
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初始化它?
答案 0 :(得分:3)
您需要将null转换为数据类型,因为默认情况下它是一个int
Select 'hello' as greeting,
Cast (null as varchar (32)) as name
Into #temp