2

我正在尝试使用临时表并遇到问题。

这是我要完成的一些超级简化的代码:

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 对其进行初始化?

4

1 回答 1

3

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

Select 'hello' as greeting,
            Cast (null as varchar (32)) as name
Into #temp
于 2013-06-11T00:20:36.557 回答