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