2016-10-09 17 views
2

この例では、奇数ノードと偶数ノードの値をSQLで取得する方法はありますか?SQLで奇数ノードと偶数ノードの値を取得する方法

declare @htmlXML xml = N'<div class="screen_specs_container "><div class="left_specs_container">Compatibility:</div><div class="right_specs_container "><h4>Acer ASPIRE 1200</h4></div><div class="left_specs_container" data-filterlabel="Replacement Part Type:">Replacement Part Type</div><div class="right_specs_container spec_highlight"> LCD Screen Only<a class="thickbox" title="" href="/laptopscreen_viewer.php?edit_language=English&amp;view_article=1468010881&amp;height=500&amp;width=800"><img valign="middle" alt="?" src="/images/question2.gif" border="0"></img></a></div><div class="left_specs_container" data-filterlabel="Size:">Size:</div><div class="right_specs_container" title="size">14.1-inch Screen (11.3"x8.4")<a class="lightbox" title="" href="//www.youtube.com/embed/_zalTiJ1vFY?autoplay=1"><img valign="middle" alt="?" src="/images/question2.gif" border="0"></img></a></div><div class="left_specs_container" data-filterlabel="Resolution:">Resolution:</div><div class="right_specs_container" title="resolution">XGA (1024x768)<a class="lightbox" title="" href="//www.youtube.com/embed/WWPSXibVLkg?autoplay=1"><img valign="middle" alt="?" src="/images/question2.gif" border="0"></img></a></div><div class="left_specs_container" data-filterlabel="Surface Type:">Surface Type:</div><div class="right_specs_container" title="type"><font color="red">Matte<a class="lightbox" title="" href="//www.youtube.com/embed/gt_CSbMF-5o?autoplay=1"><img valign="middle" alt="?" src="/images/question2.gif" border="0"></img></a></font></div><div class="left_specs_container" style="display:none" data-filterlabel="Touchscreen Panel:">Touchscreen Panel:</div><div class="right_specs_container" style="display:none">Not Included</div><div class="left_specs_container" data-filterlabel="Backlight type:">Backlight type:</div><div class="right_specs_container" title="backlight-type">CCFL 1-Bulb<a class="lightbox" title="" href="//www.youtube.com/embed/4F0xPuz4Jnw?autoplay=1"><img valign="middle" alt="?" src="/images/question2.gif" border="0"></img></a></div><div class="left_specs_container">Video signal connector:</div><div class="right_specs_container">30 pin CCFL screen[<a target="blank" class="thickbox laptops" title="Video Connector" href="/img/connectors/1_big/30pinsCCFL.jpg">image</a>]</div><div class="left_specs_container">Condition:</div><div class="right_specs_container">New Grade A+<a class="thickbox" title="" href="/laptopscreen_viewer.php?edit_language=English&amp;view_article=1243967715&amp;height=500&amp;width=800"><img valign="middle" alt="?" src="/images/question2.gif" border="0"></img></a></div><div class="left_specs_container">Warranty:</div><div class="right_specs_container">3 Years</div><div class="left_specs_container" style="color:#f00">Note:</div><div class="right_specs_container">Make sure new screen has same size, resolution, backlight as your old one!</div></div>' 

SQLコード:

SELECT 
    t.v.value('.','nvarchar(max)') as [TitleOfSpec], 
    t.v.value('.','nvarchar(max)') as [valueOfSpec] 
FROM 
    @htmlXML.nodes('/div/div') AS p(parent) 

出力任意のヒントについて

TitleOfSpec    ValueOfSpec 
(odd nodes)    (even nodes) 
------------   --------------- 
Compatibility:   Acer ASPIRE 1200 
Replacement Part Type LCD Screen Only 
.....      ...... 

おかげで、私の友人

答えて

1

この方法は、最初のdivを繰り広げます。
row_numberを使用してランキングを取得し、均等でないノードに参加させます。

WITH Divs AS 
(
    SELECT 
    row_number() over (order by (select 0)) as rn, 
    x.div.value('.','nvarchar(max)') as val 
    from @htmlXML.nodes('/div/div') x(div) 
) 
select 
divs1.val as TitleOfSpec, 
divs2.val as ValueOfSpec 
from Divs divs1 
left join Divs divs2 
    on (divs1.rn+1 = divs2.rn) 
where divs1.rn%2>0; 
+0

親愛なる@LukStormsのヒントをありがとう。あなたはこの質問を私に助けてくれますか? http://stackoverflow.com/questions/39932915/how-to-fix-error-get-node-this-example-in-sql – cyrus2500

+0

これは何ですか? on(divs1.rn + 1 = divs2.rn) ここで、divs1.rn%2> 0; – cyrus2500

+1

sqlはDivs CTEの自己結合を行います。例えば、RN = 3の場合、RN + 1 = 4である。したがって、あなたは3対4に参加します。そして、 'x%2'はxのモジュラス2です。数の法2が0に等しい場合、その数は偶数である。 – LukStorms

関連する問題