我需要使用与此类似的模式来挖掘日志表:
CREATE TABLE t (
id int PRIMARY KEY,
data varchar(max)
);
Columndata
以这种格式存储从 Web 服务接收到的 XML 文本:
这是精简版
<?xml version="1.0" encoding="UTF-8"?>
<PARAM>
<TAB DIM="30" ID="ZC3D2_1" SIZE="5">
<LIN NUM = "1">
<FLD NAME = "ZDOC" TYPE = "Char">Ferran López</FLD>
</LIN>
</TAB>
</PARAM>
当我尝试将此文本转换为 XML 时,出现下一个错误:
XML解析:第xx行,字符48,非法xml字符
可以通过删除<xml>
标签或至少删除encoding
属性来解决。
注意:如果没有特殊字符
ó
,即使我不删除<xml>
标签,它也可以正常工作。
问题
有没有办法在不替换或删除<xml>
标签的情况下将其转换为 XML?
CAST(REPLACE(data, 'encoding="UTF-8"', '') as XML)
db<>在这里摆弄
更新
服务器排序规则为:Latin1_General_BIN
但即使我尝试将排序规则更改为我通常的服务器排序规则,它也不起作用。
SELECT
id,
CAST((data COLLATE Latin1_General_CI_AS) as XML)
FROM
t;