2013-06-11 1 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 (최대) 기대 열을 준비 할 수 있지만 여전히 NULL로 초기화 할 수있는 방법이 있나요?

+2

'NULL' 기본값을 널 캐스팅해야합니다. EXEC tempdb..sp_help #TempTroubleTable ';' –

답변

3

당신은 INT``에 있기 때문에 기본적으로 데이터 유형에 해당하는 int

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

매력처럼 작동합니다! 나는 당신이 다른 것으로 널을 던질 수 있다는 것을 깨닫지 못했습니다. 감사! – MadHenchbot