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

update ステートメントを実行しようとすると、次のエラーが表示されます。

varchar 値 'Monkey' をデータ型 int に変換するときに変換に失敗しました。

一時テーブルがその列に varchar を入力することを期待していない理由は理解できますが、なぜ int を想定しているのでしょうか? varchar(max) を期待するように列を準備する方法はありますが、それでも NULL で初期化できますか?

4

1 に答える 1

3

デフォルトではintであるため、nullをデータ型にキャストする必要があります

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