如何从SQL中的XML中提取特定值?

时间:2013-02-08 16:27:22

标签: sql sql-server xml tsql xpath

<Term xmlns:xxxlocal="xx.xx.xx.xx" href="abcde?terms=1" policyTerm="1">
   <EffectiveDate>2012-05-22T00:00:00-04:00</EffectiveDate>
   <ExpirationDate>2013-05-22T00:00:00-04:00</ExpirationDate>
   <LocationCode>XXXXXX</LocationCode>
   <ProductRef href="products/XXXXXXXXXXXXXXXXXXXXX" idref="XXXXXXXXXXXXXXXXXXXXX" version="ZZZZZZZZZZZZZZZZZZZZZZZ">
       <CachedItem name="Label" value="I NEED TO EXTRACT THIS VALUE" />
    </ProductRef>
...

我正在尝试为Label1下的<ProductRef>提取值。

我正在尝试这个,但它不起作用:

SELECT XmlDoc.value('(/Term/ProductRef[1]/CachedItem[@name=sql:variable("@Label")]/@value)[1]','varchar(100)')

我一直收到错误:

  

Msg 9501,Level 16,State 2,Line 1
  XQuery:无法解析sql:variable('@ Label')。必须将变量声明为标量TSQL变量。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个

SELECT @xml.value('(/Term/ProductRef[1]/CachedItem/@value)[1]','varchar(100)')

SQLFiddle上的演示