场景拥有一个包含列varchar(20)之一的表。列主要包含整数值,但我们没有限制用户。 90%的用户输入50,但有5%的用户输入50个单位。 在代码查询中定义如下
qry = select coalesc(CONVERT(Varchar(20),column1),'') from table1
有c#代码填充数据集,如下所示
DataSet ds = loader.LoadDataSet(qry);
现在发生的是.net运行时获取第一行,因为它是一个整数(在大多数情况下),它为列分配一个int数据类型,在'50 Units'等场景中,它返回空白column1是int(在.NET运行时视图中),在CONVERT(varchar(20),column1)失败并返回空('')列。
一种替代方案是使用强类型数据集并完成它但我想知道在继续该路径之前完成任何其他替代方案。
答案 0 :(得分:0)
我的坏。实际上,这是在.net代码中失败的sql查询。当列是varchar时,执行COALESC(CONVERT(VARCHAR(20),column1),0)
之类的操作会失败。它应该是COALESC(CONVERT(VARCHAR(20),column1),'0')