2
SQL 테이블에 XML 파일이 저장되어 있습니다. 이제는 SQL을 사용하여 z 특정 요소 값을 읽고 싶습니다.XML 네임 스페이스가있는 XML에서 특정 요소 선택
XML에 네임 스페이스 요소가없는 경우 XML에서 특정 요소 값을 읽을 수 있습니다. 네임 스페이스가있는 XML 파일을 읽고 싶습니다.
다음<currency:Envelope xmlns="http://www.currency.com/eurofxref" xmlns:currency="http://www.currency.org/xml/2002-08-01">
<Cube>
<Cube time="2016-11-04">
<Cube currency="USD" rate="1.1093" />
<Cube currency="JPY" rate="114.24" />
<Cube currency="BGN" rate="1.9558" />
<Cube currency="CZK" rate="27.021" />
</Cube>
</Cube>
</currency:Envelope>
이 값을 읽기 위해 SQL 코드입니다 :
CREATE TABLE XMLwithOpenXML
(
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
LoadedDateTime DATETIME
)
INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK 'E:\currency.xml', SINGLE_BLOB) AS x;
SELECT XMLData.value('(Cube/Cube/Cube[@currency="USD"]/@rate)[1]','VARCHAR(MAX)')
FROM XMLwithOpenXML
+1 내 옆에서. 말할 것도없이 와일드 카드 (.value ('(* : Envelope/* : Cube/* : Cube/* : Cube [* * : 통화 = "USD"]/@ * : 속도) [1] ','nvarchar (max) ')')하지만 더 명확한 것이 좋습니다. 그러므로 나는 처음에'//'를 피할 것이다. – Shnugo
@ Shnugo 안녕 Shnugo! 실제로 * *를 선택해야 할 필요가있을 수 있습니다. 동일한 요소 이름을 정의하는 여러 네임 스페이스가 있는지 여부를 모르는 경우 일반적인 조언을 보여줍니다. 그러나이 경우 네임 스페이스가 하나만 있으면 와일드 카드 네임 스페이스 한정자를 선택할 수 있습니다. –