SQL Server 2008自动减少字符串的长度

时间:2015-12-10 05:33:40

标签: sql sql-server xml sql-server-2008

我一直在尝试通过在SQL Server存储过程中解析XML来读取数据。我有一个base64图像作为XML属性。我一直在尝试读取列的长度并在列中插入字符串。

  • 表名:sampleone
  • 列:id,imagedata(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)不会导致相同的内容。

0 个答案:

没有答案