sql - 雪花从 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>
我怎样才能得到那个值?
问候
解决方案
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'
推荐阅读
- jquery - 未能在“CommandLineAPI”上执行 $$
- scala - 整个控制器的身份验证
- java - Swagger 为默认响应正文生成太长的常量
- testing - 赛普拉斯 - 选择一个选项而不使用文本或值
- aws-lambda - 谷歌智能家居代理响应 Empty JSON
- gnuplot - 如何在 gnuplot 中使用循环并跳过一列?
- visual-studio - 用于集成 Microsoft 单元测试框架 (VS2017) 的 CMake
- java - 如何包含一个类路径通配符作为 java bash 调用的参数?
- ruby-on-rails - 找不到没有 ID 的产品
- python - 带有 py_func 的 Tensorflow 数据映射导致 ValueError: Cannot take the length of Shape of unknown rank