2013-03-07 31 views
5

SQL Server'da "insert into" kullanarak temp tabloları oluşturursanız, bir sütunun null değerini kabul edip etmediğini belirlemek için ilk eki kullanır. İlk insertin null değeri varsa, sütun nullable olur, aksi takdirde null olamaz.Geçici tabloların null değerlerini kabul etmesine nasıl izin verilir

Boş değerleri kabul etmek için "içine yerleştir" seçeneğini kullanarak temp tabloları oluşturmanın bir yolu var mı?

Örnek

Bu

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

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

Ancak bu

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

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

"sütununda 'b' NULL değeri eklenemiyor" atar herhangi bir sorun ben create Table yapabileceğini biliyorum ya olmadan çalışır alter column ifadesi ancak mevcut sorguları yüzlerce yeniden yazmadan yapmak istiyorum.

+1

Olası yinelenen - Eğer sahte bir kayıt eklerseniz http://stackoverflow.com/questions/5465245/create-a-nullable-column-using-sql-server-select-into – steoleary

+0

İşe yarayacak her iki sütunun değeri olarak NULL ile çok mu başlıyorsunuz? – Serg

+0

@Serg Evet, işe yarayacak ama bu sorunu çözmek için yanlış bir yol bu – Smith

cevap

3

Bu nasıl?

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

Gerçekten işe yaradı. Teşekkürler. –

1

İlk ekleme işleminden önce açıkça geçici tablo oluşturarak bunu geçici olarak çözebilirim.

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