检查其中一个属性是否包含给定值
Check whether one of the attributes contains given value or not
我正在使用 SQL Server 2012。我有以下代码
DECLARE @p varchar(4)
SET @p = ext1
DECLARE @x xml
SET @x = '<labels defaultText = "Some text 2012">
<label text = "Some text1" />
<label text = "Some text2" />
<label text = "Some text3" />
</labels>'
请帮助编写一个 xpath/xquery 查询来检查 defaultText 值或其中一个文本值是否包含 @p。在此示例中,结果将为 true ,因为第一个标签中的文本值包含 ext1。
您可以使用 .nodes()
遍历 <label>
并使用 .value()
作为根节点属性的值以及 <label>
的属性值。像这样
DECLARE @p varchar(4)
SET @p = 'ext1'
DECLARE @x xml
SET @x = '<labels defaultText = "Some text 2012">
<label text = "Some text1" />
<label text = "Some text2" />
<label text = "Some text3" />
</labels>'
DECLARE @check BIT = 0
SELECT TOP 1 @check = 1
FROM @x.nodes('labels/label') as t(c)
WHERE c.value('@text','VARCHAR(20)') LIKE '%' + @p +'%'
OR @x.value('/labels[1]/@defaultText','VARCHAR(20)') LIKE '%' + @p +'%'
SELECT @check
我正在使用 SQL Server 2012。我有以下代码
DECLARE @p varchar(4)
SET @p = ext1
DECLARE @x xml
SET @x = '<labels defaultText = "Some text 2012">
<label text = "Some text1" />
<label text = "Some text2" />
<label text = "Some text3" />
</labels>'
请帮助编写一个 xpath/xquery 查询来检查 defaultText 值或其中一个文本值是否包含 @p。在此示例中,结果将为 true ,因为第一个标签中的文本值包含 ext1。
您可以使用 .nodes()
遍历 <label>
并使用 .value()
作为根节点属性的值以及 <label>
的属性值。像这样
DECLARE @p varchar(4)
SET @p = 'ext1'
DECLARE @x xml
SET @x = '<labels defaultText = "Some text 2012">
<label text = "Some text1" />
<label text = "Some text2" />
<label text = "Some text3" />
</labels>'
DECLARE @check BIT = 0
SELECT TOP 1 @check = 1
FROM @x.nodes('labels/label') as t(c)
WHERE c.value('@text','VARCHAR(20)') LIKE '%' + @p +'%'
OR @x.value('/labels[1]/@defaultText','VARCHAR(20)') LIKE '%' + @p +'%'
SELECT @check