操作数类型冲突:int与日期、UNION ALL、NULL值不兼容



当我得到这个错误时,我完全困惑了:"操作数类型冲突:int与日期不兼容">

我有以下查询,我在哪里得到错误:

select top 1 a.[ID], a.[DateA], a.[DateD]  from  view1 a where a.ID]=1
union all 
(select top 1 a.[ID], a.[DateA], a.[DateD] from view2 a where a.[ID]=2 ) 

数据:

ID  DateA                       DateD
1   2021-01-09 00:00:00.000     NULL
2   2006-11-27 00:00:00.000     NULL

但是,如果我更改查询,使"DateD"列直接为null,那么它工作正常,没有错误:

select top 1 a.[ID], a.[DateA], null as [DateD]  from  view1 a where a.ID]=1
union all 
(select top 1 a.[ID], a.[DateA], a.[DateD] from view2 a where a.[ID]=2 ) 

在第一个视图中(在引擎盖下(选择NULL作为[DateD]在第二个视图(发动机罩下(中,我有:选择CAST(DateD AS DATE(AS[DateD]

问题出在哪里?

当SQL Server遇到NULL并且必须确定类型时,默认值为int。如果你这样做,你可以很容易地看到:

select null as x
into t;

然后看看CCD_ 3的定义(参见此处(。

因此,要获得不同类型的NULL,请投射它:

select cast(null as date) as x

您需要在视图中执行此操作。

最新更新