10

SQL Server で「insert into」を使用して一時テーブルを作成すると、最初の挿入を使用して、列が null 値を受け入れるかどうかが決定されます。最初の挿入にnull値がある場合、列はnull可能になり、それ以外の場合はnull不可になります。

「挿入先」を使用して一時テーブルを作成し、null 値を受け入れる方法はありますか?

これは問題なく動作します

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

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

ただし、これは「値NULLを列 'b'に挿入できません」をスローします

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

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

create Tableまたはステートメントを実行できることはわかってalter columnいますが、既存の何百ものクエリを書き換えずに実行したいと考えています。

4

4 に答える 4

8

これはどう?

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
于 2014-08-11T18:08:33.257 に答える
7

最初の挿入の前に一時テーブルを明示的に作成することで、これを回避します。

create table #temp (a varchar(10) not null, b int null)
于 2015-08-13T10:59:57.757 に答える