2013-03-07 7 views
5

Wenn Sie temporäre Tabellen mithilfe von "into in" in SQL Server erstellen, verwendet es die erste Einfügung, um festzustellen, ob eine Spalte einen Nullwert akzeptiert oder nicht. Wenn die erste Einfügung einen Nullwert hat, wird die Spalte zu Nullwerten, andernfalls wird keine Nullable ausgeführt.Zulassen, dass temporäre Tabellen Nullwerte akzeptieren

Gibt es eine Möglichkeit zum Erstellen von temporären Tabellen mit "Einfügen in", um Nullwerte zu akzeptieren?

Beispiel

Dies funktioniert ohne Probleme

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

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

diese

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

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

Ich weiß "um den Nullwert in Spalte 'b' einfügen kann nicht" Allerdings wirft ich create Table tun könnte oder alter column Anweisung, aber ich möchte es tun, ohne hunderte der vorhandenen Abfragen neu zu schreiben.

+1

Mögliche Duplikat - http://stackoverflow.com/questions/5465245/create-a-nullable-column-using-sql-server-select-into – steoleary

+0

Wird es funktionieren, wenn Sie an der falschen Datensatz einfügen Ganz am Anfang mit 'NULL' als Wert für beide Spalten? – Serg

+0

@Serg Ja, es wird funktionieren, aber das ist eine falsche Lösung – Smith

Antwort

3

Wie wäre es damit?

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

Das hat wirklich funktioniert. Vielen Dank. –

1

Ich würde Workaround dies durch explizites Erstellen temporäre Tabelle vor dem ersten Einfügen.

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