"<av id="E0010001">984</av><av id="E0010002">0</av><av id="E0010003">1450</av><av id="E0010004">4</av><av id="E0010005">83</av><av id="E0010006">22</av><av id="E0010007">27.8</av><av id="E0010008">2</av><av id="E0010009">11.9</av><av id="E0010010">32</av><av id="E0020100">20</av><av id="E0020101">0</av><av id="E0020102">0</av><av id="E0020103">1</av><av id="E0020104">0</av><av id="E0020105">1</av><av id="E0020106">0</av><av id="E0020107">0</av><av id="E0020108">0</av><av id="E0020200">8</av><av id="E0020201">0</av><av id="E0020202">0</av><av id="E0020203">0</av><av id="E0020204">1</av><av id="E0020205">0</av><av id="E0020206">0</av><av id="E0020207">0</av><av id="E0020208">0</av><av id="E0020300">0</av><av id="E0020301">0</av><av id="E0020302">0</av><av id="E0020303">0</av><av id="E0020304">0</av><av id="E0020305">0</av><av id="E0020306">0</av><av id="E0020307">0</av><av id="E0020308">0</av><av id="E0020400">0</av><av id="E0020401">0</av><av id="E0020402">0</av><av id="E0020403">0</av><av id="E0020404">0</av><av id="E0020405">0</av><av id="E0020406">0</av><av id="E0020407">0</av><av id="E0020408">0</av><av id="E0020500">9</av><av id="E0020501">1</av><av id="E0020502">0</av><av id="E0020503">0</av><av id="E0020504">1</av><av id="E0020505">0</av><av id="E0020506">0</av><av id="E0020507">0</av><av id="E0020508">0</av><av id="E0020600">12</av><av id="E0020601">0</av><av id="E0020602">0</av><av id="E0020603">1</av><av id="E0020604">1</av><av id="E0020605">0</av><av id="E0020606">0</av><av id="E0020607">0</av><av id="E0020608">0</av><av id="E0020700">0</av><av id="E0020701">0</av><av id="E0020702">0</av><av id="E0020703">0</av><av id="E0020704">0</av><av id="E0020705">0</av><av id="E0020706">0</av><av id="E0020707">0</av><av id="E0020708">0</av><av id="E0010011">7.2</av><av id="E0020800">0</av><av id="E0020801">0</av><av id="E0020802">0</av><av id="E0020803">0</av><av id="E0020804">0</av><av id="E0020805">0</av><av id="E0020806">0</av><av id="E0020807">0</av><av id="E0020808">0</av><av id="E0020900">0</av><av id="E0020901">0</av><av id="E0020902">0</av><av id="E0020903">0</av><av id="E0020904">0</av><av id="E0020905">0</av><av id="E0020906">0</av><av id="E0020907">0</av><av id="E0020908">0</av><av id="E0021000">0</av><av id="E0021001">0</av><av id="E0021002">0</av><av id="E0021003">0</av><av id="E0021004">0</av><av id="E0021005">0</av><av id="E0021006">0</av><av id="E0021007">0</av><av id="E0021008">0</av><av id="E0010012">50</av> " [字段1]"E0010001" [字段2] "测试数据" [字段3]
以上是有三个字段的物理表,分别为 [字段1] ,[字段2],[字段3];要求:根据 [字段2] 中的E0010001 为关键字 ,在[字段1]中寻找出红色部分的值显示效果要求如下  [字段1] [字段2] [字段3]   
E0010001 测试数据 984备注:[字段2] 中的8位字符串 是可变的,并不是固定值,要求根据[字段2] 中的 8为字符串 为关键字在 [字段1]中找出与之对应的 字符串后的 数值请问有没有动态实现的方式

解决方案 »

  1.   


    declare @tb table(av xml,c1 varchar(100), c2 varchar(100))insert @tb
    select CAST('<av id="E0010001">984</av><av id="E0010002">0</av><av id="E0010003">1450</av>' as xml),'E0010001','test data1'
    union all
    select CAST('<av id="E0010004">4</av><av id="E0010005">83</av><av id="E0010006">22</av><av id="E0010007">27.8</av>' as xml),'E0010005','test data2'select a.c1,c2,v from @tb a
    inner join
    (
    select c1,cast(u.x.query('./text()') as varchar(100))as v from @tb
    cross apply av.nodes('/av') as u(x)
    where c1 = u.x.value('./@id','varchar(100)')
    )p on a.c1 = p.c1