【问题标题】:SQL Server Varbinary(max): select a subset of bytes from the varbinary fieldSQL Server Varbinary(max):从 varbinary 字段中选择字节子集
【发布时间】:2009-08-17 16:09:54
【问题描述】:

从 SQL Server 2008 中的 varbinary(MAX) 字段(不使用 FileStreams)读取部分二进制数据的最有效方法是什么?

将数据写入列时,VarBinary.Write() 函数在 T-SQL 中可用,允许将字节增量写入字段,但似乎没有类似的函数可用于读取数据。

我知道 .Net 中的 DataReader.GetBytes() 方法将只选择您要求的字节,但这会带来性能开销吗?即 sqlserver 中的 select 是否会读取数据库中的所有字节,然后将所有这些字节提供给 getBytes() 方法,以便它获取从它们请求的字节子集?

感谢您的帮助。

【问题讨论】:

    标签: .net sql-server sql-server-2008 varbinary


    【解决方案1】:

    您使用SUBSTRING。这会从服务器上的 varbinary 数据中读取一个 sn-p,并且只将 sn-p 返回给客户端。

    [SUBSTRING] 返回 SQL Server 中字符、二进制、文本或图像表达式的一部分。[it] 如果表达式是受支持的二进制数据类型之一,则返回二进制数据。 返回的string 与指定表达式的类型相同,但表中显示了例外情况。

    【讨论】:

    • +1 有趣!我不知道我可以在 VARBINARY 列上使用 SUBSTRING! :-)
    • 太棒了。谁会想到呢?低位子串的威力
    【解决方案2】:

    使用DataReader.GetBytes() 无需开销,afaik。但是您必须使用CommandBehavior.SequentialAccess 选项调用ExecuteReader()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2011-06-02
      相关资源
      最近更新 更多