我尝试使用以下代码将图像数据导入到sql server 2008 db中:
INSERT INTO [TAB] (ID_PHOTO,PHOTO)
VALUES(
CAST('333EFB54-7062-E043-F088-FE0A916C0297' as uniqueidentifier),
CONVERT(varbinary(max),'0xFFD8FFE000')
)
该字符串只是一个虚拟对象,但是当我进行插入操作时,我在数据库中发现了类似的内容
0x307846464438464645303030
这不完全是我所期望的。有人知道我做错了吗?
最佳答案
这里的问题很简单,就是将一个字符串-'0xFFD8FFE000'
-转换为VARBINARY
,因此每个字符-首先是0
,然后是x
,然后是F
,等等-被“转换”为其十六进制表示形式:
Character -- Hex value
0 30
x 78
F 46
F 46
D 44
8 38
F 46
F 46
E 45
0 30
0 30
0 30
因此,
0xFFD8FFE000
被视为只是一个字符串,就像“这是一个测试”一样,而不是一个字节序列。幸运的是,修复非常简单:只需将
1
的“样式”值添加到CONVERT
的可选第3个参数中:SELECT CONVERT(VARBINARY(MAX), '0xFFD8FFE000', 1);
-- 0xFFD8FFE000