首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何允许临时表接受空值

如何允许临时表接受空值
EN

Stack Overflow用户
提问于 2013-03-07 14:34:03
回答 4查看 25.2K关注 0票数 8

如果您在SQL Server中使用"insert into“创建临时表,它将使用第一个insert来确定列是否接受空值。如果第一个insert具有空值,则该列变为可空,否则它将不可为空。

有没有办法使用"insert into“创建临时表来接受空值?

示例

这样做没有任何问题。

代码语言:javascript
运行
复制
Select 'one' as a , null as b
into #temp

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

但是,这会抛出“无法将NULL值插入到列‘b’中”

代码语言:javascript
运行
复制
Select 'one' as a , 500 as b
into #temp

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

我知道我可以做create Tablealter column语句,但我希望不用重写成百上千的现有查询。

EN

回答 4

Stack Overflow用户

发布于 2014-08-12 02:08:33

这个怎么样?

代码语言:javascript
运行
复制
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
票数 6
EN

Stack Overflow用户

发布于 2015-08-13 18:59:58

我可以通过在第一次插入之前显式创建临时表来解决这个问题。

代码语言:javascript
运行
复制
create table #temp (a varchar(10) not null, b int null)
票数 5
EN

Stack Overflow用户

发布于 2020-10-08 22:18:07

(Un)幸运的是,这个问题太流行了,也出现在Sybase ASE 15.7的顶部,所以只需在这里添加我对Sybase的答案。

对我来说,cast、convert或coalesce都不起作用,但case语句起到了作用(这就是coalesce,但是...)

代码语言:javascript
运行
复制
select
    a = case when 1 = 0 then null else 'one' end, 
    b = case when 1 = 0 null else 500 end 
into #temp
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15264645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档