2009-10-01 3 views
3

SQL Server 2005 데이터베이스에 다음과 같이 구매를 기록하는 테이블이 있습니다.텍스트로 저장된 XML을 어떻게 쿼리합니까?

ID (PK, int, not null) 
Request (text, null) 
Response (text, null) 
MerchantId (varchar(14), null) 
Amount (money, null) 

요청 및 응답 필드에 실제로 XML이 저장됩니다. 데이터 유형을 XML로 변경할 수 없습니다. 필자는 테이블 자체에있는 데이터 외에도 XML 텍스트 필드 2 개에서 데이터를 가져올 쿼리를 그려야합니다.

어디서부터 시작해야할지 모르겠습니다. 대부분의 검색 결과가 LINQ-to-SQL에 관한 질문으로 돌아 왔고 SQLXML 결과는 데이터 집합을 처리 할 수없는 것처럼 보입니다. 내 검색은 어디에 집중해야합니까?

+0

LINQ to SQL 쿼리와 LINQ to XML 쿼리를 함께 그룹화하려고합니까? 아니면 DB에서 결과를 가져온 다음 XML을 별도로 쿼리 할 수 ​​있습니까? –

+0

SSRS 보고서를 보내려면 결과 집합이 필요합니다. SQLCLR 또는 LINQ를 사용하여이 작업을보다 쉽게 ​​수행 할 수 없기 때문에 SQL 언어 자체 내에서만이 작업을 수행해야합니다. – JMP

+0

그런 다음 Byron Whitlock이 파생 테이블에서 XML로 캐스트 한 다음 xquery/xpath를 사용하여 관계형 필드로 XML을 분할합니다. –

답변

4

사용 CAST (XML AS 텍스트) 서버에서 조작 (그것의 사용 가치, 노드 및 쿼리 xml methods) 할 수있는 XML 입력 열을 얻었다.

SELECT ID, 
    CAST(Request AS XML) As RequestXml, 
    CAST(Request AS XML) As ResponsetXml, 
    MerchantId, 
    Amount 
FROM <table> 

만 클라이언트에서 XML을해야하는 경우, 당신은 단지 텍스트를 반환 할 수 있으며, 모든 허용 그들이 (을 XmlDocument,하여 XPathDocument, Linq는 2 XML) 선택의 클라이언트 측 XML 기술 무엇이든 사용 당신은 문자열로부터 조각을 cosntruct 할 수 있습니다. 당신이 (이후 2005) SQL 서버를 사용하는 경우

2

당신은 당신은 항상 CAST([Request] AS XML) 다음에서 데이터를 추출하는 정규 XML의 모든 기능을 사용할 수 있습니다 :, 즉시

CAST(Request AS XML) 
0

을 예컨대의 데이터를 캐스팅 할 수있다.

2
SELECT request.VALUE(/xpath/query) 
FROM 
(
    SELECT 
     CAST(Request as XML) request, 
     CAST(Response as XML) response 

    FROM purchaseTbl 
    WHERE ... 
) tbl 
WHERE ... 
0

, 하나의 가능성은 필드에서 XML을 구문 분석 닷넷 언어의 사용자 정의 함수를 작성하고 반환 수있는 TEH 쿼리의 일부로 데이터

관련 문제