1

같은 서버에 다른 데이터 정렬을 사용하는 데이터베이스가 거의 없습니다. 내가xml을 구문 분석하는 동안 한 부씩 내기

CREATE TABLE #tblDocuments 
(
    Document varchar(5) COLLATE DATABASE_DEFAULT 
    ,DocCode varchar(15) COLLATE DATABASE_DEFAULT 
    ,Ammount decimal(18,2) 
    ); 

IF @@ERROR <> 0 
    GOTO ErrorHandl; 

INSERT INTO #tblDocuments 
(
    Document 
    ,DocCode 
    ,Ammount 
) 

SELECT 
    Tbl.Col.value('@DocType','varchar(3)') AS Document 
    ,Tbl.Col.value('@DocCode','varchar(15)') AS DocCode 
    ,Tbl.Col.value('@Ammount','decimal(18,2)') AS Ammount 
FROM 
    @xmlData.nodes('/Documents/document') AS Tbl(Col); 

으로 XML을 구문 분석하고있어 미리 정의 된 데이터 정렬을 가진 첫번째 만들기 테이블없이 XML을 구문 분석하는 방법이 있나요. (이 코드가 작동하지 알고) 같은 것을 사전에

SELECT 
    Tbl.Col.value('@DocType','varchar(3) COLLATE DATABASE_DEFAULT') AS Document 
    ,Tbl.Col.value('@DocCode','varchar(15) COLLATE DATABASE_DEFAULT') AS DocCode 
    ,Tbl.Col.value('@Ammount','decimal(18,2) COLLATE DATABASE_DEFAULT') AS Ammount 
INTO #tblDocuments 
FROM 
    @xmlData.nodes('/Documents/document') AS Tbl(Col);enter code here 

들으

답변

1

.value() 함수의 COLLATE 외부에 넣어 : 또한

SELECT 
    Tbl.Col.value('@DocType','varchar(3)') COLLATE DATABASE_DEFAULT AS [Document] 
    ,Tbl.Col.value('@DocCode','varchar(15)') COLLATE DATABASE_DEFAULT AS [DocCode] 
    ,Tbl.Col.value('@Ammount','decimal(18,2)') AS Ammount 
INTO #tblDocuments 
FROM 
    @xmlData.nodes('/Documents/document') AS Tbl(Col); 
    enter code here 

을, 당신은 COLLATE를 사용하지 않는 문자열 데이터 유형 (CHAR/VARCHAR/NCHAR/NVARCHAR - 심지어는 더 이상 사용되지 않는 TEXTNTEXT dat atypes).