如何在SQL Server 2008中使用TSQL从XML varchar字符串中提取XML属性

时间:2015-01-15 04:34:30

标签: xml sql-server-2008

我有一个varchar列,其XML字符串如下所示。我需要在&#34;字符串&#34;中提取数据。 <void property="request">

的元素

在这个例子中,这是我需要提取的值:

This is the data I need to extract right here.  Testing 123, Testing 1234

非常感谢任何帮助。

<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.6.0_20" class="java.beans.XMLDecoder"> 
 <object class="java.util.HashMap"> 
  <void method="put"> 
   <string>data</string> 
   <object class="com.globo.abc.process.eb.data.ManualProcessData"> 
    <void property="caseId"> 
     <long>8406</long> 
    </void> 
    <void property="clientId"> 
     <long>25020</long> 
    </void> 
    <void property="context"> 
     <object class="java.util.HashMap"> 
      <void method="put"> 
       <string>TARGET_GROUP</string> 
       <long>102131</long> 
      </void> 
      <void method="put"> 
       <string>TYPE</string> 
       <string>TICKLER</string> 
      </void> 
     </object> 
    </void> 
    <void property="groupStepDefinitionId"> 
     <long>10274</long> 
    </void> 
    <void property="owner"> 
     <string>2256</string> 
    </void> 
    <void property="request"> 
     <string>This is the data I need to extract right here.  Testing 123, Testing 1234</string> 
    </void> 
    <void property="stepDefinitionName"> 
     <string>Manual Task</string> 
    </void> 
   </object> 
  </void> 
 </object> 
 </java>

1 个答案:

答案 0 :(得分:0)

SQL Server或任何数据库脚本语言都有一个奇怪的概念:&#39;集合&#39;数据,他们被称为表。为了迭代数据集合,您需要使用游标并选择字符串。等等等等等等。

如果您尝试提取单个已知令牌,则使用charindex,substr等

如果您有多个令牌,则必须执行游标和charindex等。

或者将数据类型更改为xml

Parse XML in SQL Server