2010-08-30 72 views
0

場景具有包含列varchar(20)之一的表。列大多包含整數值,但我們沒有限制用戶。 90%的用戶輸入50個,但有5%的用戶輸入50個單位。 代碼查詢中定義的如下假設數據類型的鬆散類型數據集

qry = select coalesc(CONVERT(Varchar(20),column1),'') from table1 

已經得到C#代碼來填充數據集如下

DataSet ds = loader.LoadDataSet(qry); 

現在發生的事情是,.NET運行時得到的第一行,因爲這是一個整數(在大多數情況下),它將該列指定爲int數據類型,在'50單位'等情況下,它返回空白,因爲column1是int(在運行時視圖中),並且在CONVERT(varchar(20),column1)並返回空('')列。

一種替代方法是使用強類型的數據集並完成它,但我很想知道任何其他替代方法在繼續前進之前完成它。

回答

0

我的不好。實際上,這是在.net代碼中失敗的sql查詢。當列是varchar時,執行類似COALESC(CONVERT(VARCHAR(20),column1),0)的操作失敗。它應該是COALESC(CONVERT(VARCHAR(20),column1),'0')