SQL에서 두 노드 사이의 공통 노드를 계산하는 방법

사이러스 2500

이 예제에서 SQL에서 두 노드 사이의 공통 노드를 계산하는 방법 :

<li>사이의 태그 <h2 id="vgn">VGN A </h2><h2 id="vgn">VGN </h2>와의 수 <h2>태그를.

즉,이 예에서 h2 number1과 h2 number 2 사이의 li 수입니다.

<table class="table table-condensed table-no-border table-brand-main">
    <tr><td><h2 id="vgn">VGN A </h2></td></tr>
    <tr><td>
    <style>
        ul.brand_572 {
                 -moz-column-count: 6;
              -webkit-column-count: 6;
                      column-count: 6;
            }
        ul.brand_572 li
        {
            width:120px;
        }
        /*ul.brand_572 li a.product-title
        {
            width:120px;
        }*/
    </style>
    <ul class="specialclass brand_572">        
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
        <li>
            <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
        </li>    
    </ul>
    </td>
    </tr>
    <tr><td><h2 id="vgn">VGN </h2></td></tr>
    <tr><td>
        <ul class="specialclass brand_572">        
            <li>
                <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
            </li>    
            <li>
                <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
            </li>    
            <li>
                <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
            </li>    
            <li>
                <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
            </li>    
            <li>
                <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
            </li>    
            <li>
                <a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony  VGN-AR290G </a>
            </li>    
        </ul>
    </td></tr>
</table>

예상 출력 :

count of li  between h2 and h2
      7              1      2

c.li = 7 번 h2 1,2 사이

Shnugo

이제 HTMLT-SQL로 해결하려는 몇 가지 문제에 대해 세 가지 질문을했습니다 .

내가 전에 말했듯이 :

T-SQL은 문제에 적합한 도구가 아닙니다!

나는 당신이 XML에 대한 깊은 오해를 가지고 있다고 말했습니다 . 다시 한 번 해보 셨습니다. 질문에 xml. 그러나 이것은 XML이 아닙니다 (처럼 보이더라도)! 이것은 HTML입니다!

SQL Server는 XML을 지원하지만 HTML에 적합한 도구는 아닙니다. HTML 파서 또는 절차 언어를 사용하여 직접 구문 분석 알고리즘을 작성하십시오.

SQL Server가 올바른 도구가 아닌 이유를 알려주세요.

당신의 특별한 경우에- 그러나 당신은 이것에 결코 의지 할 수 없습니다 !!! -귀하의 HTML은 유효한 XML입니다. 이 경우-그리고이 경우 에만! -하나는 생각할 수 XQuery있습니다. <li>요소 뒤 -elements 계산 <h2>은 다음과 같습니다.

DECLARE @s VARCHAR(MAX)='Your HTML here';
DECLARE @xml XML=CAST(@s AS XML); --you'd get your first error here probably

DECLARE @H2_id VARCHAR(100)='vgn';
SELECT COUNT(*) AS CountOnThisLevel
FROM @xml.nodes('//h2[@id=sql:variable("@H2_id")]/../../../tr[2]/td/ul/li') AS A(li)

결과는 7입니다.

이 경로

//h2[@id=sql:variable("@H2_id")]/../../../tr[2]/td/ul/li

다음과 같이 읽습니다.

문서에서 "H2_id"변수의 내용과 동일한 id 속성을 가진 h2를 검색합니다 . 이제 세 단계 위로 이동 한 다음 두 번째 단계를 취하고 <tr>트리에서 <td>, <ul>로 이동합니다 <li>. 거기에서 얼마나 많은 것을 발견했는지 세십시오.

괜찮아 보이지만

  • <h2>수 있습니다 <H2>(XQuery는 대소 문자를 구분합니다!)
  • HTML 테이블은 <thead><tfoot>
  • <div>체인에-태그 가있을 수 있습니다.
  • 그리고-거의 확실합니다! - 실제 HTML이 유효한 XML이 아닙니다.
  • 그리고 더 많은 이유, 왜이 접근법이 나쁜지!

당신은 정말로 돌아 서서 적절한 도구를 찾아야합니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

GraphX, Scala에서 두 노드 사이의 거리를 계산하는 방법은 무엇입니까?

분류에서Dev

다른 노드 위에있는 두 노드 사이의 공간을 줄이는 방법은 무엇입니까?

분류에서Dev

공통 속성을 가진 두 노드 간의 관계를 생성하는 방법은 무엇입니까?

분류에서Dev

Cypher를 사용하여 neo4j의 두 복제 노드에서 노드를 삭제하는 방법

분류에서Dev

그래프 DB에서 노드 간의 두 관계를 만드는 방법

분류에서Dev

단일 연결 목록에 두 개의 헤드가있는 방법은 무엇이며 "공통 노드"를 찾는 것은 무엇을 의미합니까?

분류에서Dev

두 개의 고유 한 노드 유형간에 공통 노드 유형을 집계하는 cypher

분류에서Dev

XQuery에서 두 노드의 가장 낮은 공통 조상을 찾는 방법은 무엇입니까?

분류에서Dev

Xpath. 두 노드 사이에 노드를 지정하는 방법은 무엇입니까?

분류에서Dev

Leaflet을 사용하여 두 노드 사이에 경로를 그리는 방법

분류에서Dev

두 개의 노드가있는 링크 된 노드를 반복하는 방법

분류에서Dev

드래그 된 노드를 다른 노드 앞에 두는 방법 (JavaFX 8)?

분류에서Dev

파이썬에서 인접한 두 노드 사이의 음의 가중치를 찾는 방법

분류에서Dev

단일 노드의 에지를 계산하는 방법은 무엇입니까?

분류에서Dev

neo4j에서 동일한 노드 이름을 가진 두 노드 간의 관계를 만드는 방법

분류에서Dev

각 노드에 두 개 이상의 잎이있는 트리를 복사하는 방법은 무엇입니까?

분류에서Dev

각 노드에 두 개 이상의 잎이있는 트리를 복사하는 방법은 무엇입니까?

분류에서Dev

노드 방문자를 사용할 때 두 노드 사이에 중단되지 않는 공백을 어떻게 얻을 수 있습니까?

분류에서Dev

유 방향 그래프에서 두 노드의 모든 공통 조상을 결정하는 효율적인 방법은 무엇입니까?

분류에서Dev

Godot에서 두 노드 좌표를 비교하는 방법

분류에서Dev

SQL의 ntext 열에서 xml 노드를 삭제하는 방법

분류에서Dev

두 개의 다른 노드 사이에있는 노드 식별

분류에서Dev

XML 파일의 서로 다른 두 노드를 추출하는 방법

분류에서Dev

pmd에서 하나의 규칙에 두 개의 AST 노드를 사용하는 방법은 무엇입니까?

분류에서Dev

두 테이블에서 공통적 인 필드를 무시하는 방법

분류에서Dev

neo4j의 .net 클라이언트를 사용하여 두 노드 사이에 관계가 있는지 확인하는 방법

분류에서Dev

neo4j에서 세 번째 노드를 통해 관련된 두 노드를 모델링하는 방법은 무엇입니까?

분류에서Dev

Neo4j 모든 노드와 하나 이상의 공통 노드와의 관계를 (DISTINCT) 얻는 방법은 무엇입니까?

분류에서Dev

Neo4j 모든 노드와 하나 이상의 공통 노드와의 관계를 (DISTINCT) 얻는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    GraphX, Scala에서 두 노드 사이의 거리를 계산하는 방법은 무엇입니까?

  2. 2

    다른 노드 위에있는 두 노드 사이의 공간을 줄이는 방법은 무엇입니까?

  3. 3

    공통 속성을 가진 두 노드 간의 관계를 생성하는 방법은 무엇입니까?

  4. 4

    Cypher를 사용하여 neo4j의 두 복제 노드에서 노드를 삭제하는 방법

  5. 5

    그래프 DB에서 노드 간의 두 관계를 만드는 방법

  6. 6

    단일 연결 목록에 두 개의 헤드가있는 방법은 무엇이며 "공통 노드"를 찾는 것은 무엇을 의미합니까?

  7. 7

    두 개의 고유 한 노드 유형간에 공통 노드 유형을 집계하는 cypher

  8. 8

    XQuery에서 두 노드의 가장 낮은 공통 조상을 찾는 방법은 무엇입니까?

  9. 9

    Xpath. 두 노드 사이에 노드를 지정하는 방법은 무엇입니까?

  10. 10

    Leaflet을 사용하여 두 노드 사이에 경로를 그리는 방법

  11. 11

    두 개의 노드가있는 링크 된 노드를 반복하는 방법

  12. 12

    드래그 된 노드를 다른 노드 앞에 두는 방법 (JavaFX 8)?

  13. 13

    파이썬에서 인접한 두 노드 사이의 음의 가중치를 찾는 방법

  14. 14

    단일 노드의 에지를 계산하는 방법은 무엇입니까?

  15. 15

    neo4j에서 동일한 노드 이름을 가진 두 노드 간의 관계를 만드는 방법

  16. 16

    각 노드에 두 개 이상의 잎이있는 트리를 복사하는 방법은 무엇입니까?

  17. 17

    각 노드에 두 개 이상의 잎이있는 트리를 복사하는 방법은 무엇입니까?

  18. 18

    노드 방문자를 사용할 때 두 노드 사이에 중단되지 않는 공백을 어떻게 얻을 수 있습니까?

  19. 19

    유 방향 그래프에서 두 노드의 모든 공통 조상을 결정하는 효율적인 방법은 무엇입니까?

  20. 20

    Godot에서 두 노드 좌표를 비교하는 방법

  21. 21

    SQL의 ntext 열에서 xml 노드를 삭제하는 방법

  22. 22

    두 개의 다른 노드 사이에있는 노드 식별

  23. 23

    XML 파일의 서로 다른 두 노드를 추출하는 방법

  24. 24

    pmd에서 하나의 규칙에 두 개의 AST 노드를 사용하는 방법은 무엇입니까?

  25. 25

    두 테이블에서 공통적 인 필드를 무시하는 방법

  26. 26

    neo4j의 .net 클라이언트를 사용하여 두 노드 사이에 관계가 있는지 확인하는 방법

  27. 27

    neo4j에서 세 번째 노드를 통해 관련된 두 노드를 모델링하는 방법은 무엇입니까?

  28. 28

    Neo4j 모든 노드와 하나 이상의 공통 노드와의 관계를 (DISTINCT) 얻는 방법은 무엇입니까?

  29. 29

    Neo4j 모든 노드와 하나 이상의 공통 노드와의 관계를 (DISTINCT) 얻는 방법은 무엇입니까?

뜨겁다태그

보관