假设数据类型的松散类型数据集
场景 拥有一个包含 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(在.net 运行时视图中),并且在 CONVERT(varchar(20), column1) 处失败并返回空 ('') 列。
一种替代方法是使用强类型数据集并完成它,但我很想知道在继续该路径之前是否有任何其他替代方法可以完成它。
Scenario Having a table with one of the column varchar(20). Column mostly contains integer values but we haven't restricted the user. 90% of users enter 50, but there are 5% users who enter 50 Units.
Defined an in code query as follows
qry = select coalesc(CONVERT(Varchar(20),column1),'') from table1
Have got c# code to populate dataset as follows
DataSet ds = loader.LoadDataSet(qry);
Now what happens is that the .net runtime gets the first row and because it's an integer (in most of the case), it assigns the column an int data type and in scenarios like '50 Units', it returns blank as column1 is int (in.net runtime view) and fails at CONVERT(varchar(20), column1) and returns empty ('') column.
One alternative is to user strongly typed dataset and get it done but I would love to know of any other alternative to get it done before going on that path.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的不好。实际上,这是 .net 代码中的 sql 查询失败的原因。当列为 varchar 时,执行诸如
COALESC(CONVERT(VARCHAR(20),column1),0)
之类的操作会失败。它应该是COALESC(CONVERT(VARCHAR(20),column1),'0')
My bad. Actually, it was the sql query which was failing in .net code. When a column is varchar, doing something like
COALESC(CONVERT(VARCHAR(20),column1),0)
fails. It should beCOALESC(CONVERT(VARCHAR(20),column1),'0')