我在从XML列检索字符串数据时遇到问题。我在xml中有一个包含大量数据的节点。如果我尝试用任何value
一种方法获取它,或者用query
它给出空字符串(即在xml中等于NULL)。
在调试中,我知道,值方法仅在其中字符小于或等于43679的情况下才检索数据。
我读了所有与43679图有关的SO问题,这是从SSMS网格复制时SSMS中的错误。但是这里的问题不是SSMS。即使从.Net应用程序调用SP,也遇到同样的问题。
例如:
Declare @XmlStr XML;
select @XmlStr=
'<Main>
<Node1>/9j/4gIcSUNDX1BST0ZJTEUAAQEA.. 50000+Charcters ...</Node1>
</Main>';
SELECT @XmlStr.value('(/Main/Node1)[1]','varchar(max)') ;
如果Node1包含以下43679个字符,则表示正在输出。有没有解决的办法?还是我错过了什么?
我正在使用SQL Server 2008R2
您不应该尝试将其作为字符串来获取...其中的值<Node1>
是base64
编码的二进制值。XML.value()
将为您隐式重新编码。试试这个
Declare @XmlStr XML;
select @XmlStr=
'<Main>
<Node1>/9j/4gIcSUNDX1BST0ZJTEUAAQEA</Node1>
</Main>';
SELECT @XmlStr.value('(/Main/Node1)[1]','varbinary(max)')
,CAST(@XmlStr.value('(/Main/Node1)[1]','varbinary(max)') AS VARCHAR(100));
结果清楚地表明,这是JPEG(以开头FFD8
)。的大小VARBINARY(MAX)
应足够...
0xFFD8FFE2021C4943435F50524F46494C4500010100
ÿØÿâICC_PROFILE
(无意义的)转换varchar
向我们展示了一些EXIF数据...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句