转换为BLOB到XML-XML解析:非法xml字符

时间:2018-09-20 17:39:03

标签: sql xml

我在数据库中有一个Blob列,列的名称是energy。 查询是:

    select 
CONVERT(xml,(CONVERT(varbinary(max),energy)))
from tableenergy

但是我收到错误“ XML解析:非法xml字符”

我用TOAD检查ACII中XML具有类似以下内容的列 “ Name =” Mois pr ?? c ?? dent“

如果我使用UTF 8签入TOAD看起来更好 “名称=“ Moisprécédent”

我想进行查询以避免该错误,我想这是因为转换是通过ASCII完成的,如何在查询中转换XML中的BLOB列?

2 个答案:

答案 0 :(得分:0)

您需要将xml转换为UTF 16或Unicode,xml解析器无法读取变音符号(即éè)。这些符号不在ASCII图表中,请尝试以下操作:

select value(x).getBlobVal(energy_charset_id('AL32UTF8')) from tableenergy

答案 1 :(得分:0)

由于我们不知道您使用的是哪种数据库(Oracle,mySQL,Postgre等),因此这是一个常规解决方案。

为了使转换真正起作用,您需要确保您没有使用XML解析功能无法理解的任何值。

尝试一下:

gl_Position.z = gl_Position.z - offset * 2.0 * gl_Position.w;