select PARSE_XML('<PropBag>
<Prop Name="Sub" Value="0"/>
<Prop Name="Adjustments 2" Value="0"/>
<Prop Name="Adjustments 3" Value="0"/>
<Prop Name="car" Value="1"/>
<Prop Name="Answers" Value="3"/>
<Prop Name="Transfer" Value="No"/>
<Prop Name="Applied" Value="No"/>
</PropBag>') as xml
,XMLGET(xml,'PropBag', 0 )
,GET(xml, '$')
,GET(xml, '@attrname')
,GET(xml, '@')
,XMLGET(xml, 'Prop', 0 )
;
给予
XMLGET(XML,'PROPBAG', 0 )
NULL
GET(XML, '$')
[
{
"$": "",
"@": "Prop",
"@Name": "Sub",
"@Value": 0
},
{
"$": "",
"@": "Prop",
"@Name": "Adjustments 2",
"@Value": 0
},
{
"$": "",
"@": "Prop",
"@Name": "Adjustments 3",
"@Value": 0
},
{
"$": "",
"@": "Prop",
"@Name": "car",
"@Value": 1
},
{
"$": "",
"@": "Prop",
"@Name": "Answers",
"@Value": 3
},
{
"$": "",
"@": "Prop",
"@Name": "Transfer",
"@Value": "No"
},
{
"$": "",
"@": "Prop",
"@Name": "Applied",
"@Value": "No"
}
]
GET(XML, '@ATTRNAME')
NULL
GET(XML, '@')
"PropBag"
XMLGET(XML, 'PROP', 0 )
<Prop Name="Sub" Value="0"></Prop>
因此,基于XMLGET 文档,这意味着您“不需要”访问顶级PropBag,因为您已经拥有它。因此,要求它不起作用,而要求 Prop 确实起作用..
这也可以通过GET(xml, '$') 看到,即“提取内容”
在这些examples 中,您会看到它读取文档和"$" 上的 FLATTEN,它在子对象上循环。
喜欢:
SELECT
auction_announcement.index as auction_contents_index,
auction_announcement.value as auction_contents_value
FROM treasury_auction_xml,
LATERAL FLATTEN(to_array(treasury_auction_xml.src_xml:"$" )) xml_doc,
LATERAL FLATTEN(to_array(xml_doc.VALUE:"$" )) auction_announcement;