【问题标题】:SQL Server XQuery in one line?一行中的 SQL Server XQuery?
【发布时间】:2012-01-09 15:33:32
【问题描述】:
 DECLARE @myXml XML

 SET @myXml =  CONVERT(xml, '<a key="2"></a>', 1)

 SELECT  s.value('@key', 'VARCHAR(8000)')   AS myKey from   @myXml.nodes('/a')  t(s)

答案:

这很好。

我想在不声明 @myXml 变量的情况下这样做。

类似:

 SELECT  
    s.value('@key', 'VARCHAR(8000)') AS myKey 
 FROM 
    CONVERT(xml, N'<a key="2"></a>', 1) .nodes('/a')  t(s)

但我得到一个错误:

【问题讨论】:

    标签: sql-server xquery-sql


    【解决方案1】:

    你可以这样做:

    Select CONVERT(xml, N'<a key="2"></a>', 1).value('a[1]/@key', 'varchar(8000)')
    

    【讨论】:

    • @Royi Namir:这将您限制在根目录下的一个“a”标签实例。如果您需要多个实例(如果您的真实 XML 字符串比示例中的更复杂),您将需要一种不同的方法,该方法实际上像您的第一个示例那样切碎 XML(下面是我的示例)。如果只有一个'a'标签,kd7的方法肯定会更快。
    【解决方案2】:

    这应该可行:

    ;WITH xgen (xdata)
    AS
    (
        SELECT CONVERT(xml, '<a key="2"></a>', 1) AS xdata
    )
    select s.value('@key', 'VARCHAR(8000)')   AS myKey 
    from xgen
        cross apply xgen.xdata.nodes('/a') t(s)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多