如何使用"XML SET"选择记录?在SQL Server中? [英] How to select records using "XML SET" in sql server ?
本文介绍了如何使用"XML SET"选择记录?在SQL Server中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
亲爱的所有人,
我正在使用XML SET并从xml中选择一条记录,但是问题是结果是我得到了笛卡尔积.我想要简单的查询结果.
以下是相同的代码
DECLARE @parameters XML SET @parameters=''<Parameter><id>3</id><key>ip</key><val>10.97.151.46</val></Parameter> <Parameter><id>6</id><key>pno</key><val>107</val></Parameter>'' SELECT RecId.ID.value(''.'',''VARCHAR(20)''), RecKey.KY.value(''.'',''VARCHAR(20)''), RecVal.VL.value(''.'',''VARCHAR(20)'') FROM @parameters.nodes(''/Parameter/id'') as RecId(ID), @parameters.nodes(''/Parameter/key'') as RecKey(KY), @parameters.nodes(''/Parameter/val'') as RecVal(VL)
输出
=====
3 ip 10 . 97 . 151 . 46
3 pno 10 . 97 . 151 . 46
3 ip 107
3 pno 107
6 ip 10 . 97 . 151 . 46
6 pno 10 . 97 . 151 . 46
6 ip 107
6 pno 107
预期产量
===========
3 ip 10 . 97 . 151 . 46
6 pno 107
请帮助我.
谢谢.
解决方案
您不需要三个不同的表即可获得所需的结果.请考虑以下内容:
SELECT RecId.ID.query(' ' ' VARCHAR(20)'), RecId.ID.query(' val').value(' .',' VARCHAR( 20)') FROM @ parameters .nodes(' /Parameter') as RecId(ID)
>
Dear All,
I am using the XML SET and selecting a records from xml, but problem is that in result i am getting the cartesian product as a result. And i want simple query result.
Following is the code for same
DECLARE @parameters XML SET @parameters=''<Parameter><id>3</id><key>ip</key><val>10.97.151.46</val></Parameter> <Parameter><id>6</id><key>pno</key><val>107</val></Parameter>'' SELECT RecId.ID.value(''.'',''VARCHAR(20)''), RecKey.KY.value(''.'',''VARCHAR(20)''), RecVal.VL.value(''.'',''VARCHAR(20)'') FROM @parameters.nodes(''/Parameter/id'') as RecId(ID), @parameters.nodes(''/Parameter/key'') as RecKey(KY), @parameters.nodes(''/Parameter/val'') as RecVal(VL)
Output
=====
3 ip 10.97.151.46
3 pno 10.97.151.46
3 ip 107
3 pno 107
6 ip 10.97.151.46
6 pno 10.97.151.46
6 ip 107
6 pno 107
Expected Output
============
3 ip 10.97.151.46
6 pno 107
Please help me into this.
Thanks.
解决方案
You don''t need three different tables to get the desired result. Consider the following:
SELECT RecId.ID.query('key').value('.','VARCHAR(20)'), RecId.ID.query('val').value('.','VARCHAR(20)') FROM @parameters.nodes('/Parameter') as RecId(ID)
这篇关于如何使用"XML SET"选择记录?在SQL Server中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文