2012-04-09 5 views
3

SQL Server에서 xquery를 처음 사용했습니다.Xquery에서 [1]의 의미는 무엇입니까

저는 속성이있는 [1]을 사용하여 xquery 표현식을 자주 접했습니다.

누군가가 설명 할 수있는 것이 무엇을 의미합니까? 여기

는 예를

declare @aa xml 
set @aa='<data> 
    <row> 
    <Value>1</Value> 
    <Text>Masters</Text> 
    </row> 
    <row> 
    <Value>2</Value> 
    <Text>Transactions</Text> 
    </row> 
    <row> 
    <Value>3</Value> 
    <Text>Misch. Reports</Text> 
    </row> 
</data>' 


select a.f.value('Value[1]','varchar(50)'), -- why [1] here ? 
    a.f.value('Text[1]','varchar(50)')   -- and here too.. 
from @aa.nodes('/data/row') as a(f) 

감사 N 당신이 현재 /data/row에 대한 첫 번째 Value 요소와 동일한에 대한 첫 번째 Text 요소를 원하는 말을하는지이 경우 감사

+0

좋은 Q - 나는 항상 인덱스 (은'값 '노드의 첫 번째 항목) 당연하다고 생각하지만 – JNK

+0

확실히 그것은 그렇지 않으면 – Deb

+0

그럼 답이 보인다 여러 행을 반환 실 거예요 인덱스되지 않습니다 모르겠어요 그렇지 않다는 것을 나타냅니다 :) 이것이 계층 구조라는 것을 명심하십시오, 그래서 저는 그것이 트리의 그 레벨에서 첫 번째 값 노드를 의미한다고 생각합니다. 당신은 여러 개의 값을 얻을 수 있도록 여러 행을. – JNK

답변

3

입니다. 거기에 [2]을 넣으면 두 번째 것을 의미합니다. 단 하나의 행만 있다는 것을 알고있는 곳에 [1]을두면, 하나의 요소 만 value 함수를 입력하는 것이 안전하다고 느끼게됩니다.

+0

그게 전부입니까? 다른 이유가 없습니까? – Deb

+0

무슨 소리 야? 네, 그게 전부입니다. 당신은' 6 7 9을 '가지고 쿼리에 세 번째'Data' 요소를 취득 할 수 있기 때문이다. 그래서'[#]'문법으로 허용한다. –

+0

나는 거의 확신하지만 여전히 어떤 사람이 더 많은 정보를 가지고 있다면 기다리고있다. – Deb

8

XPath에서 [expression] 구문은 위치 경로상의 predicate을 나타냅니다. [1][position()=1]의 경우 abbreviated syntax이며 '첫 번째 요소'를 의미합니다. SQL Server에서 XPath를 사용하면 [1] (또는 결정적으로 최대 하나의 요소까지 필터링하는 다른 조건부)이 필요합니다. XPath 식을 임의의 수의 요소를 반환하는 변환에서 결정적으로 0 또는 1 개의 요소를 반환하는 변환으로 변환하므로 변환 .value()이 필요로하는 스칼라 표현식으로 변환합니다.

XQuery는 최대 하나의 값을 반환해야합니다.

+0

아주 잘 답변을했습니다. 링크도 가져 주셔서 감사합니다. –

+0

예, 정말 정보가 풍부했습니다. 감사합니다 Remus .. – Deb