sql - 我有一个表,其中一列是 XML Clob。我想将 XML 属性提取为列
问题描述
我将以下 XML 作为数据存储在表中的 1 列中。我想提取VestingInfo下的所有数据,每个源数据应该是一列。我尝试了以下方法,但它没有给出有效的标识符错误
选择计划。* from cth01.tablename pl, XMLTABLE(XMLNAMESPACES ('http://...' as "ns3", 'http:/...' as "ns4"), '/CTHClob/ns3:OtherData/ ns4:Participant/ns4:Plans'
PASSING xmltype(pl.rqst_info) COLUMNSNumber varchar2(20) path 'ns4:Number', Pin varchar2(20) path 'ns4:Pin') 计划其中 pl.prty_rqst_id = '';
XML 如下所示
<?xml version="1.0"?><CTHClobType xmlns:ns2="http://... xmlns:ns4....>
--namespaces removed
<ns3:OtherData>
<ns4:Participant>
<ns4:Name>ALEXA MAKAILA JAVAVILLAGE</ns4:Name>
<ns4:PIN>4159505</ns4:PIN>
<ns4:PlanBalance>3497.15</ns4:PlanBalance>
<ns4:ForcedDistributionAmount>3497.15</ns4:ForcedDistributionAmount>
<ns4:ParticipantListType>Critical</ns4:ParticipantListType>
<ns4:Plans>
<ns4:Plan>
<ns4:Number>100178</ns4:Number>
<ns4:Name>CHILDRENS HOSPITAL OF PHIL. RETIREMENT SAVINGS PLAN - CSA</ns4:Name>
<ns4:Balance>3497.15</ns4:Balance>
<ns4:VestingInfo>
<ns4:DelayedVestingLite>false</ns4:DelayedVestingLite>
<ns4:DelayedVestingFull>true</ns4:DelayedVestingFull>
<ns4:VestingSourcesOnSingleSchedule>false</ns4:VestingSourcesOnSingleSchedule>
--The above 3 should be repeted for each source
<ns4:Sources>
<ns4:Source>
<ns4:SourceID>T</ns4:SourceID>
<ns4:SourceName>EMPLOYER MATCH</ns4:SourceName>
<ns4:VestedPercentage>50</ns4:VestedPercentage>
<ns4:VestedAmount>5647.94</ns4:VestedAmount>
<ns4:UnAdjustedVestedPercent>50</ns4:UnAdjustedVestedPercent>
<ns4:TIAAContractNumber>330292F5</ns4:TIAAContractNumber>
<ns4:CREFContractNumber>430292F3</ns4:CREFContractNumber>
<ns4:ContractName>GRA</ns4:ContractName>
</ns4:Source>
<ns4:Source>
...
</ns4:Source>
</ns4:Sources>
</ns4:VestingInfo>
上面的 xml 是部分的,因为它完全是一个大的,所以删除了不相关的标签。
结果元素应如下所示
解决方案
找到了解决方案。下面非常适合上面的查询
SELECT prty_rqst_id, vstng_src_on_sngl_sch, OMNI_PLN_NBR, sources.*
FROM cth01.rqst_payload pl,
XMLTABLE(xmlnamespaces (<namespaces>),
'//pathToXMLTagToBeExtracted/.../'
passing xmltype(pl.rqst_info)
COLUMNS
OMNI_PLN_NBR VARCHAR2(6) path 'ns4:Number'),
XMLTABLE(xmlnamespaces (<namespaces>),
'//pathToXMLTagToBeExtracted/...//ns4:VestingInfo'
passing xmltype(pl.rqst_info)
COLUMNS
vstng_src_on_sngl_sch VARCHAR2(50) path 'ns4:VestingSourcesOnSingleSchedule'),
XMLTABLE(xmlnamespaces (<namespaces>) ,
'//pathToXMLTagToBeExtracted/...//ns4:VestingInfo/ns4:Sources/ns4:Source'
passing xmltype(pl.rqst_info)
COLUMNS
src_id VARCHAR2(20) path 'ns4:SourceID',
src_nm VARCHAR2(50) path 'ns4:SourceName',
SUB_PLN_NBR VARCHAR2(16) path 'ns4:SubplanNumber',
vstd_pct NUMBER(20, 2) path 'ns4:VestedPercentage',
vstd_amt NUMBER(20, 2) path 'ns4:VestedAmount',
UPD_UNADJ_VSTD_PCT NUMBER(15,2) path 'ns4:UpdatedUnAdjustedVestedPercent',
unadj_vstd_pct NUMBER(20, 2) path 'ns4:UnAdjustedVestedPercent',
tiaa_cntrct_nbr VARCHAR2(50) path 'ns4:TIAAContractNumber',
cref_cntrct_nbr VARCHAR2(50) path 'ns4:CREFContractNumber',
cntrct_nm VARCHAR2(50) path 'ns4:ContractName' ) sources
WHERE pl.prty_rqst_id = '123')
推荐阅读
- python - 用于 https 调用的 curl 命令的等效 python 代码
- php - 用逗号和字符串中的空格替换 3d 空格
- stata - esttab 使用逗号和冒号重命名行为
- python - Tensorflow tf.nn.conv2d 为变量和常量给出不同的结果
- c - 来自字符串的指针和字符数组
- r - 多元回归模型的过滤估计的点须图
- javascript - 加载页面时是否可以让我的视频全屏显示?
- python - 内置用于创建长度为 n 的字符集的排列?
- sql-server - 如果组中没有行数,则显示消息
- c# - 销售订单行的 Acumatica rest API PUT 不断返回 500 错误