【问题标题】:Check whether one of the attributes contains given value or not检查属性之一是否包含给定值
【发布时间】:2015-04-16 11:19:47
【问题描述】:

我使用的是 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。

【问题讨论】:

  • 你能不能把你目前尝试过的sql查询也加进去?

标签: sql sql-server xpath xquery xquery-sql


【解决方案1】:

您可以使用.nodes() 遍历&lt;label&gt; 并使用.value() 作为根节点属性的值以及&lt;label&gt; 的属性值。像这样的

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

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2012-02-02
    • 2020-02-09
    • 2013-04-22
    相关资源
    最近更新 更多