2013-03-07 22 views
5

Jeśli utworzysz tabele tymczasowe za pomocą "wstawiania do" w SQL Server, używa pierwszej wstawki do określenia, czy kolumna przyjmuje wartość pustą, czy nie. jeśli pierwsza wstawka ma wartość pustą, kolumna staje się zerowa, w przeciwnym razie nie będzie możliwa do zniesienia.Jak zezwolić tabelom tymczasowym na akceptowanie wartości pustych

Czy istnieje sposób tworzenia tabel tymczasowych przy użyciu opcji "wstaw do", aby zaakceptować wartości puste?

Przykład

Działa to bez problemu

Select 'one' as a , null as b 
into #temp 

insert into #temp 
Select 'two' as a , 500 as b 

Jednak to rzuca "Nie można wstawić wartość NULL w kolumnie 'b'"

Select 'one' as a , 500 as b 
into #temp 

insert into #temp 
Select 'two' as a , null as b 

Wiem, że mógłbym zrobić create Table lub alter column oświadczenie, ale chcę to zrobić bez przepisywania setek istniejących zapytań.

+1

Możliwy duplikat - http://stackoverflow.com/questions/5465245/create-a-nullable-column-using-sql-server-select-into – steoleary

+0

Będzie to działać, jeśli włożysz fałszywy rekord u bardzo zaczynając od 'NULL' jako wartości obu kolumn? – Serg

+0

@Serg Tak, to zadziała, ale jest to zły sposób na rozwiązanie tego problemu. – Smith

Odpowiedz

3

Co powiesz na to?

Select CONVERT(varchar(100), 'one') as a , CONVERT(int, 500) as b 
into #temp 

insert into #temp 
Select 'two' as a , null as b 

select * from #temp order by 1 
+0

To naprawdę zadziałało. Dzięki. –

1

Chciałbym obejść to poprzez jawne tworzenie tabeli tymczasowej przed pierwszym wstawieniem.

create table #temp (a varchar(10) not null, b int null)