解析时整理 xml
Collate while parsing xml
在同一台服务器上,我几乎没有使用不同排序规则的数据库。
我正在将 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);
有没有一种方法可以在不先使用预定义排序规则创建 table 的情况下解析 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
提前致谢
将 COLLATE
放在 .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
- 甚至已弃用的 TEXT
和 NTEXT
数据类型)。
在同一台服务器上,我几乎没有使用不同排序规则的数据库。 我正在将 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);
有没有一种方法可以在不先使用预定义排序规则创建 table 的情况下解析 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
提前致谢
将 COLLATE
放在 .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
- 甚至已弃用的 TEXT
和 NTEXT
数据类型)。