我一直在尝试通过在SQL Server存储过程中解析XML来读取数据。我有一个base64图像作为XML属性。我一直在尝试读取列的长度并在列中插入字符串。
sampleone
varchar(max)
)XML格式:
<testdoc>
<filescollection>
<file_data> --base64encodedImage </file_data>
</filescollection>
</testdoc>
我们正在使用以下select命令检查xml数据
SELECT
Pers.value('(file_data)[1]', 'varchar(MAX)') AS 'imagetest'
FROM
@p_files_xml.nodes('/testdoc/filescollection[1]') as EMP(Pers)
显示:13000
但是当我们INSERT
在表格中并试图找到长度时我们得到1200
SET @image = (SELECT
Pers.value('(file_data)[1]', 'varchar(MAX)')
FROM
@p_files_xml.nodes('/testdoc/filescollection[1]') as EMP(Pers) )
INSERT INTO sampleone VALUES ('1', @image)
SELECT LEN(imagedata)
FROM sampleone
WHERE id = '1'
结果是1200
这种截断背后的原因是什么?我知道超过8000的大小会被截断,但我甚至尝试使用nvarchar
,因此varchar(max)
+ nvarchar(n)
不会导致相同的内容。