如何使用雪花中的parse_xml忽略损坏的xml行

时间:2020-11-09 20:38:05

标签: snowflake-cloud-data-platform parsexml

函数parse_xml失败,并显示消息解析XML错误:不是XML元素,位置1 ,这是由于一个无效的xml条目引起的,还是可以忽略该无效的xml条目并继续。

这是背景 我通过其余服务将xml数据存储到雪花表中,该服务存储为varchar,进一步选择此数据,解析为xml并进行过滤/处理。函数parse_xml在我们的情况下效果很好,但是如果任何一项无效,它就会放弃。

这是下面的示例查询,我希望忽略“红色”并返回“绿色”,而不是抛出错误。

SELECT parse_xml(XML)
FROM
  (SELECT ('<color>green</color>') XML
   UNION SELECT ('red') XML);

1 个答案:

答案 0 :(得分:1)

使用check_xml()检查XML的有效性:

SELECT parse_xml(XML)
FROM
  (SELECT ('<color>green</color>') XML
   UNION SELECT ('red') XML)
WHERE check_xml(XML) is NULL ;

这将根据需要返回<color>green</color>