我有以下sql代码(varbinary大约有90k个字符):
exec sp_executesql N'INSERT INTO EXAMPLE_TABLE (NAME, VERSION, OBJECT)
VALUES (@P1, @P2, @P3)',
N'@P1 varchar(8000),@P2 varchar(8000),@P3 varbinary(max)',
'TEST', '1.0', 0x3C3F786D6C2076657273696F6E3D22312E302220656E63.......
执行此代码后,如果执行了:
SELECT * FROM EXAMPLE_TABLE
我得到的结果 OBJECT
列只有我插入的字符的一半(大约45k个字符)。
我还尝试了以下方法:
DECLARE @EXAMPLE AS VARBINARY(MAX)
SET @EXAMPLE = CONVERT(VARBINARY(MAX), <my varbinary>, 1)
EXEC sp_executesql N'INSERT INTO EXAMPLE_TABLE (NAME, VERSION, OBJECT) VALUES (@P1, @P2, @P3)',
N'@P1 varchar(8000),@P2 varchar(8000),@P3 varbinary(max)',
'TEST','1.0', @EXAMPLE
同样的事情也发生了。
提前谢谢。
1条答案
按热度按时间qmb5sa221#
我想你已经明白了二进制文字是什么了。二进制文字是
0x
加上2个十六进制字符编码每个字节的数据。在您的问题中,二进制文字长度为89380个字符,即:
2个字符代表
0x
,加89378个字符表示十六进制字符
它编码44689字节的数据,即:
89378 / 2 = 44689
.如果你
select datalength(object) from example_table
以你的问题为例,你得到44689,这是正确的长度。