我得到了以下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同样的事情也会发生。
提前谢谢。
发布于 2020-07-02 10:34:52
我认为您正在理解什么是二进制文字。二进制文字是编码每个数据字节的0x加上2个十六进制字符。
在您的问题中,二进制文字的长度为89380个字符,即:
0x,这将编码44689字节的数据,即:89378 / 2 = 44689。
如果你select datalength(object) from example_table你的问题的例子,你会得到44689,这是正确的长度。
https://stackoverflow.com/questions/62679597
复制相似问题