2011-05-21 28 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