我是XQuery的总菜鸟,但在开始深入研究之前,我想请一些专家就我是否正在寻找正确的方向提出建议。
我在表格中看到了XML:
'<JOURNALEXT>
<JOURNAL journalno="1" journalpos="1" ledgercode="TD1">
</JOURNAL>
<JOURNAL journalno="1" journalpos="1" ledgercode="TD2">
</JOURNAL>
<JOURNAL journalno="1" journalpos="1" ledgercode="TD3">`enter code here`
</JOURNAL>
-----almost 50 such nodes
</JOURNALEXT>'
现在分类帐代码属性的值在某个表中。我必须过滤其分类码值不在表格中的值的所有节点。
例如,我的ledger_code表有两个条目TD1&amp; TD2
所以我应该得到结果XML
<JOURNALEXT>
<JOURNAL journalno="1" journalpos="1" ledgercode="TD3">
</JOURNAL>
-----almost 50 such nodes
</JOURNALEXT>
我可以使用基于一个属性删除节点。
declare @var_1 varchar(max) = 'TD1'
BEGIN TRANSACTION
update [staging_data_load].[TBL_STG_RAWXML_STORE] WITH (rowlock)
set XMLDATA.modify('delete /JOURNALEXT/JOURNAL[@ledgercode!= sql:variable("@var_1")]')
where job_id=@job_Id
但我的情况非常复杂。我需要从表中获取多个分类帐,并确保只保留包含分类帐表的节点。休息全部被删除。
我正在使用MS SQL SERVER 2012 ...作为数据库并尝试编写xquery。