【发布时间】:2017-06-26 10:26:27
【问题描述】:
我有一个电子表格,可以将所有值加载到 SQL Server 中。电子表格中的字段之一恰好是钱。现在为了正确显示所有内容 - 我在我的 tbl 中添加了一个字段,其中 Money 作为 DataType。
当我从电子表格中读取值时,我几乎会将其存储为字符串,例如...“94259.4”。当它被插入到 sql server 中时,它看起来像这样 "94259.4000"。当我从数据库中获取 sql server 值时,有没有办法基本上摆脱 sql server 值中的 0 - 因为我遇到的问题是 - 即使这两个值相同 - 因为它们都是比较的作为字符串 - 它认为没有相同的值。
当值可能看起来像这样时,我预见到另一个问题...94,259.40 我认为可能有效的方法是将数字限制为 2 之后。所以只要我从 Server 中选择这种格式的值 94,259.40 - 我觉得应该没问题。
编辑:
For Column = 1 To 34
Select Case Column
Case 1 'Field 1
If Not ([String].IsNullOrEmpty(CStr(excel.Cells(Row, Column).Value)) Or CStr(excel.Cells(Row, Column).Value) = "") Then
strField1 = CStr(excel.Cells(Row, Column).Value)
End If
Case 2 'Field 2
' and so on
我遍历每个字段并将值存储为字符串。然后我将它与数据库进行比较,看看是否存在具有相同值的记录。在我看来唯一的字段是 Money 字段。
【问题讨论】:
-
很久以前吸取的丑陋教训:从不,从不,从不,从不,从不,永远,在 SQL Server 中使用 MONEY 数据类型。它使小狗受伤并导致宇宙不平衡。
-
必须有某种机制将电子表格数据传输到 SQL Server...
-
@Bobski 从不用钱。 从不将数字或日期数据存储为文本。只要你使用了错误的数据类型并且不解释数据是如何进入 SQL Server 的,就不可能提供帮助。顺便说一句,Excel 没有类型。只有文本格式样式。都是文字或数字。修复表格类型并更改加载工具或流程以正确解析和加载数字数据。所有工具都允许您导入指定格式或排序规则的数字
-
@user3272686 - 见编辑
-
撇开双曲线 cmets 不谈,金钱是一种完全有效的数据类型,有时也是谨慎的选择。
标签: sql-server string type-conversion money-format