首页 > 解决方案 > 雪花从 XML 列中获取值

问题描述

我在雪花公司工作

我需要 XML 中的特定值

SELECT data_xml,REGEXP_SUBSTR(data_xml,'<pinLessNetworkBin>(.*?)(</pinLessNetworkBin>)',3) as network
FROM  "DW"."DB"."TABLE" 

我现在的结果

<pinLessNetworkBin>STAR</pinLessNetworkBin>

我只需要里面的值

这里的xml:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:FundingSource xmlns:ns0="www.url.com/be/example/payments/model/Concepts/FundingSource" Id="12887819260" extId="">
  <id>3939</id>
  <pinLessNetworkBin>STAR</pinLessNetworkBin>
</ns0:FundingSource>

我怎样才能得到那个值?

问候

标签: sqlxmlsnowflake-cloud-data-platform

解决方案


XML 对象的内容是通过GET(object, '$')这样来检索的,因此您的正则表达式结果GET(parse_xml(network), '$') 将为您提供内容。请参阅获取

或者你真的应该pinLessNetworkBin通过XMLGET检索:

SELECT data_xml,
    XMLGET(parse_xml(data_xml), 'pinLessNetworkBin') as pinLessNetworkBin
FROM  "DW"."DB"."TABLE" 
  parse_xml(data_xml)

这将为您提供<pinLessNetworkBin>STAR</pinLessNetworkBin>您想要获取的内容

SELECT data_xml,
    get(XMLGET(parse_xml(data_xml), 'pinLessNetworkBin'), '$') as pinLessNetworkBin
FROM  "DW"."DB"."TABLE" 
  parse_xml(data_xml)

应该给你'STAR'

查看PARSE_XML


推荐阅读