sql-server - 尝试使用 XML 节点从 XML 中提取 IP

标签 sql-server xml tsql

从下面的 xml 中,我试图提取 IP,但这不起作用..我不确定我在哪里犯了错误

declare @xml xml

set @xml='<auditElement>
  <RequestOrigination>
    <IP>20.20.20.20</IP>
     </RequestOrigination>
</auditElement>'

我的尝试

select 
 b.value('@IP[1]','nvarchar(100)')
 from  @xml.nodes('/auditElement/RequestOrigination') as org(b)

需要的输出:

IP
20.20.20.20

最佳答案

不需要 .nodes()...

IP 前不需要@。这将尝试读取名为“IP”的属性,但您正在读取*元素的内容(text() 节点)。您的代码适用于这样的事情:

<SomeElement IP="20.20.20.20">

您可以像这里一样将 .value() 与完整的 XPath 一起使用:

declare @xml xml

set @xml='<auditElement>
  <RequestOrigination>
    <IP>20.20.20.20</IP>
     </RequestOrigination>
</auditElement>';

SELECT @xml.value('(/auditElement/RequestOrigination/IP/text())[1]','varchar(20)');

关于sql-server - 尝试使用 XML 节点从 XML 中提取 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52633356/

相关文章:

c# - SQL Server 删除数据库失败

sql - 在 SQL Server 中存储旧日期的最佳方法

sql-server - 如何在SQL中提取方括号之间的文本

java - 使用 XSAttributeUse.getValueConstraintValue() 时,Apache Xerces 抛出 java.lang.NoSuchMethodError

sql-server - 了解 SQL Server 审计和 .sqlaudit 日志文件

sql-server - 帮助避免使用 CURSOR 进行列计算

sql-server - Postgresql的独立实例是否可能

android - 如何从项目资源android中解析一个xml

java - Android,通过 HTTP 将 XML 字符串发送到服务器

sql - 如何使用 SQL 查询创建逗号分隔的列表?