2011-05-21 74 views
0

我有在那里计算一列的SQL表视图:0.1 * [column_name]其中[column_name]DecimalNULL类型。SQL视图成为可空

由于某种原因,接收到的视场变为。

为什么NOT NULL更改为NULL

问候 的Mariusz

+1

我们需要看代码。 – Hogan 2011-05-21 13:33:06

+0

准备发布代码,但现在没有意义。下面是我谈论的很好的例子。不管怎么说,还是要谢谢你。 – Mariusz 2011-05-22 20:15:47

回答

1

你可以迫使它回到是不是由它环绕空在ISNULL中:

create table T (
    Value decimal(38,12) not null 
) 
go 
create view V1 
as 
    select 0.1 * Value as Value from T 
go 
create view V2 
as 
    select ISNULL(0.1 * Value,0) as Value from T 
go 

V1的值列标记为空,V2不是。奇怪的是,这是一个地方,你不能使用兼容COALESCE更标准:

create view V3 
as 
    select COALESCE(0.1 * Value,0) as Value from T 
go 

V3类似V1。

+0

奇怪的情况是,当遇到与DateTime列完全相同的问题时,我遇到了一个奇怪的情况 - 当使用带有GETDATE的ISNULL作为默认值时,DBML仍生成可空的日期时间。我用一个静态日期字符串替换了GETDATE,然后它工作。 – 2012-07-18 15:22:58

0

你忘记发布您的代码,但它可能是因为左或右联接找不到任何匹配行...

+0

感谢您的回答,但这是一个与精度问题在这里解释http://msdn.microsoft.com/en-us/library/ms190476.aspx – Mariusz 2011-05-21 13:54:18

+0

@aristo - 该网页没有提及NULL ... – 2011-05-21 14:28:12