Sql server 解析xml时进行整理

Sql server 解析xml时进行整理,sql-server,xml,sql-server-2012,sql-server-2008-r2,collation,Sql Server,Xml,Sql Server 2012,Sql Server 2008 R2,Collation,在同一台服务器上,我有几个具有不同排序规则的数据库。 我将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 INT

在同一台服务器上,我有几个具有不同排序规则的数据库。 我将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);

提前Thx

校对
放在
.value()
函数之外:

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
此外,除了字符串数据类型(
CHAR
/
VARCHAR
/
NCHAR
/
NVARCHAR
/
/
NVARCHAR
--甚至不推荐使用的
TEXT
NTEXT
数据类型)之外,您不使用
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