【问题标题】:Blob combine in SQL Server 2008SQL Server 2008 中的 Blob 组合
【发布时间】:2011-09-12 08:24:54
【问题描述】:

我有一个具有以下架构的表:

Create table TempMedia

id int Primary key,
mediaid  int,
FileData varbinary(max)

此表包含完整文件的部分内容(我们使用 silverlight 控件将数据分块到 Web 服务器)

我们将完整的文件存储在另一个表中:

create table Media
id int primary key,
FileData varbinary(max)

有没有办法在 SQL 中对 Media 表执行插入操作,将文件部分完全连接起来,所以我们最终会在 Media 表中得到完整的文件? 目前,我们通过从 TempMedia 表中选择数据并在 Web 服务器上将其组合,然后插入回 Media 表来组合这些文件部分。 理想情况下,我们希望仅在 SQL Server 上执行此操作。

【问题讨论】:

  • 数据类型“blob”在 SQL Server 中不存在...请提供正确的数据库引擎或正确的代码
  • 您的二进制大对象 (blob) 是存储在“图像”数据类型中还是使用“varbinary(max)”?
  • 这应该有助于解决您的部分问题:stackoverflow.com/questions/3108985/…

标签: sql sql-server-2008 blob


【解决方案1】:

这应该得到连接的二进制文件,然后您可以将其插入到您的表中。

DECLARE @bin varbinary(max)
SELECT @bin=CASE WHEN @bin is null THEN FileData ELSE @bin + FileData END
FROM TempMedia
WHERE MediaId = @mediaId
ORDER BY id -- make sure this is sequential

【讨论】:

  • 可能值得一读 Mircosoft 对this connect issue 的回复:“在带有 ORDER BY 子句的查询中使用赋值操作(本例中的连接)具有未定义的行为”
  • 很有趣——我已经用过几次了,没有发现任何问题。所以我想如果你想让它防弹,那么它必须是一个 UDF 和一个光标。
猜你喜欢
  • 2019-10-06
  • 1970-01-01
  • 2013-05-10
  • 2011-06-28
  • 2011-01-31
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
相关资源
最近更新 更多