我有以下输入 XML:
<?xml version="1.0"?>
<Employees>
<Employee emplid="1111">
<lastname>Watson</lastname>
<age>30</age>
<email>johnwatson@sh.com</email>
</Employee>
<Employee emplid="2222">
<firstname>Sherlock</firstname>
<lastname>Holmes</lastname>
<age>32</age>
<email>sherlock@sh.com</email>
</Employee>
</Employees>
请注意员工 1111 中缺少的名字
我正在执行以下选择:
select
c1.emplid,
fname,
lname
from(
select emplid, xmldata from employeeXML
LATERAL VIEW explode (xpath(xmldata,'/Employees/Employee/@emplid')) dummyTable as emplid )c1
LATERAL VIEW explode (xpath(xmldata,concat('/Employees/Employee[@id="',c1.emplid,'"',']/firstname/text()')))dummyTable2 as fname
LATERAL VIEW explode (xpath(xmldata,concat('/Employees/Employee[@id="',c1.emplid,'"',']/lastname/text()'))) dummyTable3
as lname;
预期结果:
1111 NULL Watson
2222 Sherlock Holmes
请注意缺少名字的 NULL 值)
但是我得到以下结果:
第2222章 福尔摩斯
因为缺少员工 1111 的名字,所以我没有让第一个员工回到我的查询中。有没有办法按照预期结果中的指示取回两个员工数据,其中名字设置为 NULL 和/或缺少空格时?请帮忙。谢谢,