2011-07-08 48 views
2

這裏是我的示例圖(做作,但我知道顯示我的問題):SQL Server中的VIEW 2008 CONVERT語句使列定義的數據類型NULL

CREATE VIEW NullTest 
AS 
SELECT 
    1 AS IntNoConvert, 
    CONVERT(BIT, 1) AS IntConvert, 
    CAST(1 AS BIT) AS IntCast 

的數據類型作爲最終的觀點:

IntNoConvert (int, not null) 
IntConvert (bit, null) 
IntCast (bit null) 

所以CONVERT和CAST使列允許NULL - 通常不是視圖中的問題,但是我使用LinqToSql的ontop,我需要數據類型爲NOT NULL。

任何想法如何使CONVERT語句返回數據爲NOT NULL?

+1

難道你不能只改變模型中的可空屬性嗎? – a1ex07

+0

是的,我可以,我只是想要數據庫和模型匹配,因爲我發現LinqToSql有一些奇怪的輸出,如果NULL/NOT NULL設置不匹配。 –

回答

3

使用SQL IsNull功能,以確保非空性:

CREATE VIEW NullTest 
AS 
SELECT 
    1 AS IntNoConvert, 
    IsNull(CONVERT(BIT, 1), 1) AS IntConvert, 
    IsNull(CAST(1 AS BIT), 1) AS IntCast 

這感覺有點哈克所以我a1ex07的評論,你應該在你的模型中定義的非空性,而不是同意。

+0

謝謝你這樣做,現在列不是NULL,這是我想要的。 –

相關問題