0

如何使用二进制编写器为 Money 数据类型编写正确的 MS SQL 原生格式?

我想在 .net 中取一个值,从文件中读取为十进制数的字符串表示形式(实际上是从 SQL 导出的“Money”数据类型,但这并不重要)。

如何使用二进制写入器写入值,以便您可以在本机格式模式下使用 BCP 或 BULK INSERT 成功读取值?

4

2 回答 2

0

(其中 w 是先前实例化的二进制写入器)

                    Dim dec = CDec(aString)
                    Dim lng = CLng(dec * 10000)
                    Dim bytes = BitConverter.GetBytes(lng)
                    w.Write(bytes(4))
                    w.Write(bytes(5))
                    w.Write(bytes(6))
                    w.Write(bytes(7))
                    w.Write(bytes(0))
                    w.Write(bytes(1))
                    w.Write(bytes(2))
                    w.Write(bytes(3))

可能有更清洁或更好的方法,但这似乎没问题

提醒一下,这种格式仅适用于 NON NULL 货币列,我认为你必须先写一个长度字节或类似的东西才能用于可空货币列

于 2009-02-18T17:23:52.573 回答
0

我不记得如何使用 BCP 对分隔文件中的数字类型执行空值,但我相信如果您使用长度前缀文件,长度值 -1 表示空值。

于 2010-01-20T11:38:21.210 回答