SQL Server 2012使用XQuery筛选无TextReadingId的Step节点方法
解决方法
你可以使用XML类型的exist()方法判断节点是否存在,该方法返回位值:节点存在返回1,不存在返回0,直接在WHERE子句加判断条件即可,完整查询语句如下:
SELECT x.XmlCol.value('(StepId)[1]', 'uniqueidentifier') as StepId FROM tblStepList s CROSS APPLY s.Data.nodes('/Steplist/Step') x(XmlCol) WHERE x.XmlCol.exist('TextReadingId') = 0
逻辑说明
x.XmlCol对应你拆分出来的每个<Step>节点,直接判断这个节点下是否存在<TextReadingId>子节点即可,不需要再写完整的XML路径- 执行后返回的结果和你期望的一致:
StepId ------------------------------------ E36A3450-1C8F-44DA-B4D0-58E5BFE2A987 11D70A50-08AC-4767-A0D3-87717384FF45
内容的提问来源于stack exchange,提问作者Helen Araya
相关产品推荐
相关产品推荐

