如何从TEXT列中插入到SQL Server 2014中的XML列

时间:2017-01-19 11:41:37

标签: sql-server xml

我将XML文档存储在TEXT列中(collat​​ion_name French_CI_AS,character_set_name iso_1)。

我想将它们移动到一个新表中,在XML列中使用以下SQL ...

INSERT INTO Signature(JustifId, SignedJustif)
   SELECT JustifID, CONVERT(XML, Justif.SignedJustif,2)
   FROM Justif

当我这样做时,我得到字符编码错误,指向此片段中的高ascii字符“presentación,OU = CERES,O = FNMT-RCM,C = ES” - X509证书中的西班牙语重音o

这个开始生活在utf8中,变成utf16作为.net字符串,然后在插入TEXT列时变为iso_1。我可以将它复制并粘贴到网页中没问题。那么,如何将它从TEXT列移动到同一个数据库中的XML列(,为什么这么难?)?

CONVERT的想法来自this帖子。 This MS页面介绍了如何从varchar和nvarchar创建XML。

1 个答案:

答案 0 :(得分:2)

这很棘手......字节级转换可能会导致意外结果......

试试这个

INSERT INTO Signature(JustifId, SignedJustif)
SELECT JustifID, CONVERT(XML, CONVERT(VARCHAR(MAX),Justif.SignedJustif))
FROM Justif

如果您仍然遇到问题,请尝试在转化时指定特定的排序规则和/或尝试转换为NVARCHAR(MAX)

如果这没有帮助,请编辑您的问题并提出(减少)示例。 Best是一个具有最小XML的测试场景,可以重现错误。