[SQL] 어떻게 2008 SQL 서버에서 XML 열을 읽습니까?
SQL어떻게 2008 SQL 서버에서 XML 열을 읽습니까?
나는 SQL Server 2008의 XML을 사용한 적이, 나는 당신이 그것을 어떻게 변수 테이블에 고객의 목록을 추출해야?
나는 판매 테이블하여 customerList라는 열이 있음을 감안할 때 그 어떻게 SQL에서 고객의 목록을 추출 할 아래 같은 같은 외모?
<ArrayOfCustomers xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Customer>
<ItemId>1</ItemId>
<Value>Mr Smith</Value>
</Customer>
<Customer>
<ItemId>2</ItemId>
<Value>Mr Bloggs</Value>
</Customer>
</ArrayOfCustomers>
해결법
-
==============================
1.이 같은 시도 :
이 같은 시도 :
SELECT Cust.value('(ItemId)[1]', 'int') AS 'ItemID', Cust.value('(Value)[1]', 'Varchar(50)') AS 'Customer Name' FROM dbo.Sales.CustomerList.nodes('/ArrayOfCustomers/Customer') AS AOC(Cust)
즉,이 같은 출력 무언가를 제공해야합니다 :
ItemID Customer Name 1 Mr Smith 2 Mr Bloggs
-
==============================
2.당신은 CROSS을 사용하는 XML 열에 테이블에서 적용해야
당신은 CROSS을 사용하는 XML 열에 테이블에서 적용해야
create table sales (customerlist xml) insert sales select ' <ArrayOfCustomers xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Customer> <ItemId>1</ItemId> <Value>Mr Smith</Value> </Customer> <Customer> <ItemId>2</ItemId> <Value>Mr Bloggs</Value> </Customer> </ArrayOfCustomers>'
SELECT N.C.value('ItemId[1]', 'int') ItemId, N.C.value('Value[1]', 'varchar(100)') Value FROM dbo.Sales CROSS APPLY CustomerList.nodes('//Customer') N(C)
편집 - 참고 쿼리는 위의 표 (다중 행)에 XML 컬럼 작업을 설명하기 위해 신속하게 작성되었습니다. 성능상의 이유로, '// 고객'를 사용하는 대신 '/ ArrayOfCustomers / 고객을'절대 경로를 사용하지 마십시오. '// 고객은'모든 수준에서 XML 어디서나 고객 노드를 찾기 위해 전체 XML을 통해 이동합니다.
from https://stackoverflow.com/questions/4815836/how-do-you-read-xml-column-in-sql-server-2008 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 시퀀스에서 다음 번호를 얻는 방법 (0) | 2020.06.18 |
---|---|
[SQL] 주말을 제외한 SQL에서 두 날짜 사이의 계산 차이, (0) | 2020.06.18 |
[SQL] 함수 (SQL 서버) 내에서 동적 SQL을 실행할 때 오류를 얻기? (0) | 2020.06.18 |
[SQL] 이 표에서 간단한 SQL 선택 (A 무엇을 가입한다?) (0) | 2020.06.18 |
[SQL] 아포스트로피와 데이터베이스에 SQL 삽입 (0) | 2020.06.18 |