不完全确定您要做什么 - 加上显示的 XML 无效(缺少 的结束标记<request-message>
)。
也许是这样的??我只是在<parameter>
节点上迭代并输出我能想到的所有相关信息,作为一个关系数据集:
DECLARE @SomeTable TABLE (ID INT NOT NULL, Request XML)
INSERT INTO @SomeTable (ID, Request)
VALUES (1, '<request-message version="1.0">
<request class="GET_ALL">
<parameter name="IsInSystem" type="System.Boolean">True</parameter>
<parameter name="ConfirmDate" type="System.DateTime">2021-05-04 00:00:00.000</parameter>
<parameter name="ConfirmTime" type="System.DateTime">2021-05-04 00:00:00.000</parameter>
</request></request-message>' )
SELECT
ID,
RequestClass = xc.value('(../@class)[1]', 'varchar(25)'),
ParamName = XC.value('(./@name)[1]', 'varchar(50)'),
ParamType = XC.value('(./@type)[1]', 'varchar(50)'),
ParamValue = XC.value('(./text())[1]', 'varchar(250)')
FROM
@SomeTable
CROSS APPLY
Request.nodes('/request-message/request/parameter') AS XT(XC)
WHERE
ID = 1
这会给你一个类似这样的结果:
ID |
请求类 |
参数名称 |
参数类型 |
参数值 |
1 |
得到所有 |
系统 |
System.Boolean |
真的 |
1 |
得到所有 |
确认日期 |
系统日期时间 |
2021-05-04 00:00:00.000 |
1 |
得到所有 |
确认时间 |
系统日期时间 |
2021-05-04 00:00:00.000 |