我有一个 XQuery 如下
DECLARE @x XML
SELECT @x = '<PartnerEmails>
<Email>a@xxxx.com</Email>
<Email>b@xxxx.com</Email>
</PartnerEmails>'
SELECT @x.query('data(PartnerEmails/Email)').value('.','varchar(100)') AS Val
Run Code Online (Sandbox Code Playgroud)
实际输出:
Val
a@xxxx.com b@xxxx.com
Run Code Online (Sandbox Code Playgroud)
预期输出
a@xxxx.com
b@xxxx.com
Run Code Online (Sandbox Code Playgroud)
即在两个不同的行中。
怎么办呢?
用这个:
SELECT
node.value('.','varchar(100)') AS Val
FROM
@x.nodes('/PartnerEmails/Email') AS PE(Node)
Run Code Online (Sandbox Code Playgroud)
由于内部有多个节点<PartnerEmails>,因此需要使用该.nodes()函数创建 XML 片段的“内联”表 - 该表中的每一“行”都包含一个<Email>节点,然后您可以在该节点上查询(并提取 XML 节点的内容) 。
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |