rot*_*ine 13 t-sql binary sql-server-2008
有一个图像字段,并希望从十六进制字符串中插入:
insert into imageTable(imageField)
values(convert(image, 0x3C3F78...))
Run Code Online (Sandbox Code Playgroud)
但是当我运行select时,返回值为0,另外0为0x03C3F78 ...
这个额外的0导致另一个应用程序出现问题,我不想要它.
如何阻止添加额外的0?
架构是:
CREATE TABLE [dbo].[templates](
[templateId] [int] IDENTITY(1,1) NOT NULL,
[templateName] [nvarchar](50) NOT NULL,
[templateBody] [image] NOT NULL,
[templateType] [int] NULL)
Run Code Online (Sandbox Code Playgroud)
并且查询是:
insert into templates(templateName, templateBody, templateType)
values('I love stackoverflow', convert(image, 0x3C3F786D6C2076657273696F6E3D.......), 2)
Run Code Online (Sandbox Code Playgroud)
实际的十六进制字符串非常大,可以在这里发布.
Pau*_*nis 11
我刚遇到类似的问题,我责备自己.
您可以复制所需的部分数据.就我而言,我在blob的末尾加了'0'.
原因可能是将值从SQL Management Studio复制到剪贴板.
插入到imageTable(imageField)值(0x3C3F78 ... A)
选择返回:0x03C3F78 ...
插入到imageTable(imageField)值(0x3C3F78 ... A 0)
选择返回:0x3C3F78 ...
我希望这将有所帮助.
最好的祝愿.
这对于 0x0 是正确的:每对数字构成一个字节,因此 0x00 存储了该值
当我运行时,SELECT convert(varbinary(max), 0x55)我在 SQL Server 2008 上得到 0x55。SELECT convert(varbinary(max), 85)给我 0x00000055,这是正确的,85 是一个 32 位整数
您要转换为 varbinary 的数据类型是什么?
编辑:我仍然无法使用图像而不是 varbinary 进行复制
但有些问题: