使用mssql在其属性为空时删除xml标记

时间:2014-06-19 12:37:26

标签: sql sql-server xml

我在列中有以下xml内容,

<Certification name="ACT" type=""/>
<Certification name="CERTIFIED PEDIATRIC NURSE" type="Certification"/>
<Certification name="LICENSED VOCATIONAL NURSE (LVN)" type="License"/> 

我的问题是当我发现“类型”属性为空时,应该终止该单个标记。

例如我需要输出如下,

  <Certification name="CERTIFIED PEDIATRIC NURSE" type="Certification"/>
  <Certification name="LICENSED VOCATIONAL NURSE (LVN)" type="License"/> 

在上面的输出中,空'type'属性已被删除。

那么有人可以建议如何使用sql查询吗?

1 个答案:

答案 0 :(得分:1)

你应该可以做这样的事情......

DECLARE @xml as table(xmlData xml)

insert into @xml(xmlData)
select '<Certification name="ACT" type=""/><Certification name="CERTIFIED PEDIATRIC NURSE" type="Certification"/><Certification name="LICENSED VOCATIONAL NURSE (LVN)" type="License"/>'

SELECT xmlData.query('/Certification[@type!=""]') as filteredXml
FROM   @xml T

正如您已经在表格列中获得的那样,您可以使用最后一个select语句分别用您的表名和表字段替换@xml和xmlData