首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在.NET中有没有区分SQL Money和Decimal类型的方法?

在.NET中有没有区分SQL Money和Decimal类型的方法?
EN

Stack Overflow用户
提问于 2018-06-07 05:19:21
回答 2查看 501关注 0票数 2

MoneyDecimal的SQL类型在.NET中都被解释为Decimal,有什么方法可以区分它们吗?我正在尝试正确地设置Excel电子表格的格式,但不知道哪些字段应设置为货币格式,哪些字段应为小数。例如:

代码语言:javascript
复制
+----------------+------------------+--------------+-----------------+
| Name (VarChar) | Weight (Decimal) | Cost (Money) | Inventory (Int) |
+----------------+------------------+--------------+-----------------+
| Widget         | 3.75             | 9.99         |              25 |
+----------------+------------------+--------------+-----------------+

上面的标题包括用于此问题的数据类型,query是从该表中选择的存储过程:

代码语言:javascript
复制
var result = conn.Query<dynamic>(query, parameters, commandType: CommandType.StoredProcedure).ToList();

foreach (var pair in (IDictionary<string, object>)result[0]) {
  Console.WriteLine($"{pair.Key}: {pair.Value.GetType().Name}");
}

将导致:

代码语言:javascript
复制
Name: String
Weight: Decimal
Cost: Decimal
Inventory: Int32

我找到了这篇文章:Money datatype and decimal type of SQL in .net,但不幸的是,我没有标准化的列名,因为这意味着要将任何结果集转换为Excel电子表格。

我还考虑过在需要时更改存储过程以预先挂起美元符号,但这样做的工作量会大得多,而且很可能会破坏其他功能。

有没有不同的方法来确定结果的SQL类型?

EN

回答 2

Stack Overflow用户

发布于 2018-06-07 05:46:21

我以前也遇到过类似的问题,我刚刚从sys.columns INNER JOIN sys.types ON columns.user_type_id = types.user_type_id中查询过这些列。但是看起来您使用的是存储过程。在SQL Server2012及更高版本中,您可以使用sys.dm_exec_describe_first_result_set_for_object(@object_id,1)查找存储过程的元数据。

票数 1
EN

Stack Overflow用户

发布于 2019-10-16 17:05:02

我建议您在SQL中使用可编程性下的类型(用户定义的类型)。

您可以创建一个类型,就像我们在SQL中创建一个由名称、重量、成本和库存组成的类一样,在返回这些值的过程中,将它们添加到您刚刚创建的用户定义类型中,并将其作为集合发送。

在.Net中,创建一个包含相同属性(名称、重量、成本和库存)的类,并在其中获取值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50729774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档