如何在SQL中保存字节数组?

时间:2015-05-21 19:37:41

标签: sql sql-server-2012 bytearray

如何仅使用SQL或SQL Server Management Studio将字节数组保存到SQL中的单元格中?

我将图像转换为字节数组,现在我有一个1000多行字节数组,我希望保存在SQL中的(Content-Type)单元格中。

尝试执行简单的更新命令失败:

varbinary(max)

但这只会出错:

  

关键字' WHERE'附近的语法不正确。

删除WHERE子句(这没有意义,因为我需要指定我试图将其保存到哪一行数据)设法得到错误:

  

不允许从数据类型varchar(max)到varbinary(max)的隐式转换。使用CONVERT函数运行此查询。

我明显做错了什么,我不确定是什么。我环顾四周,似乎每个人都在C#代码中这样做,如果我需要更频繁地这样做,那就好了,但我只是想把这些数据放在一个单元格中一次。 / p>

2 个答案:

答案 0 :(得分:2)

以下是插入,更新和选择数据的示例:

DECLARE @TableName TABLE
(
  [Cell] INT,
  [Image] VARBINARY(MAX)
)

INSERT INTO @TableName VALUES (1, CONVERT(VARBINARY(MAX), 'Test'))

UPDATE @TableName
SET [Image] = (CONVERT(VARBINARY(MAX), 'lengthy string
with over
1000 hard returned lines'))
WHERE [Cell] = 1

SELECT [Image] FROM @TableName

SELECT CONVERT(VARCHAR(MAX), [Image]) FROM @TableName

答案 1 :(得分:1)

这可能适合您: https://dba.stackexchange.com/questions/63743/converting-a-varchar-to-varbinary

这样的事情就是你需要包装数据

SELECT CONVERT(VARBINARY(25), '0x9473FBCCBC01AF', 1);