【发布时间】:2018-09-07 13:48:03
【问题描述】:
我有一个表'TEST',它有一个xml类型的列'info'。 列信息具有 XML 之类的
<RootEPS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EPS key="FirstName" value="Test" />
<EPS key="LastName" value="Singh" />
<EPS key="address1" value="23 t-2" />
<EPS key="EmailAddress" value="test.singh@gmail.com" />
</RootEPS>
我想创建一个 XPATH sql 查询来获取每个 EPS 节点的属性“值”的数据,例如根据给定的电子邮件,firstName 作为 fName,lastName 作为 lName。
对于输入电子邮件 test.singh@gmail.com,我想要一个类似的输出
fName | lName | address1 | email
Test | Singh | 23 t-2 | test.singh@gmail.com
我正在尝试这样的事情,但它不起作用
SELECT distinct
N.x.value('@value', 'nvarchar(100)') as fName,
N.x.value('@value', 'nvarchar(100)') as lName,
N.x.value('@value', 'nvarchar(100)') as address1,
N.x.value('@value', 'nvarchar(100)') as email,
FROM
TEST AS RO
CROSS APPLY
RO.info.nodes('/RootEPS/EPS[@key="EmailAddress" and @value="test.singh@gmail.com"]') AS N(x)
在输出中我只得到电子邮件值。主要是在 N.x.value('@value' 部分有问题。
【问题讨论】: