当我运行 sql 查询时,我得到如下信息:
不允许从数据类型 varchar 到数据类型的隐式转换
varbinary.... 使用 CONVERT 函数运行此查询。 (严重程度
16)`
我想要插入的数据看起来像
'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'
如何完成这个查询?
查询看起来像:
UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12
从 SQL Server 2005 开始,CONVERT 可以满足您的需求:
CONVERT(varbinary(2000), '00001340132401324...', 2)
二进制转换的样式有:
- 0:原始数据,ascii 代码点变为二进制字节,UTF-16 代码点变为每个字节。
- 1:十六进制格式,前缀‘0x’
- 2:十六进制格式,不带'0x'前缀
将字符转换为格式 0 的二进制:
-
char
or varchar
数据(例如 ASCII、ISO-8859-1)变成二进制字节。对于单字符编码,这意味着每个字符一个字节。
-
nchar
or nvarchar
数据(即 UTF-16)变为每个两个字节,采用大端格式,因此N'ABC'
变成0x410042004300
将十六进制转换为格式 1 和 2 的二进制:
- 每两个输入的十六进制数字成为一个字节
- 如果输入的十六进制无效,则会发生错误
- 不允许使用空格和标点符号
参见MSDN:
- https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql
如果您需要 UTF-8,请参阅我的答案,了解将文本转换为 UTF-8 的 UDF:
- 计算 UTF8 字符串的 MD5 哈希值 https://stackoverflow.com/questions/35200452/compute-md5-hash-of-a-utf8-string/35289890#35289890
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)