【问题标题】:How do you use a binarywriter to write the correct MS SQL native format for the Money data type?如何使用二进制编写器为 Money 数据类型编写正确的 MS SQL 原生格式?
【发布时间】:2010-10-08 09:40:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql-server bulkinsert currency bcp


    【解决方案1】:

    (其中 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 货币列,我认为您必须先为可空货币列写一个长度字节或类似的东西

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 2017-07-13
        • 2012-07-05
        • 1970-01-01
        相关资源
        最近更新 更多