每当我将字符串解析为 SQL XML 数据类型时,我都会注意到只要空格和 XML 回车混合在一起,回车就会消失。如果它们不是混合的,事情就可以正常工作。有谁知道为什么会这样?

请参阅下面的 SQL 示例代码

DECLARE @var XML

PRINT 'This is a statement with two XML carriage-return characters'
SET @var = CONVERT (XML,'<root>Dear Sir,&#xD;&#xD;I am passing CR</root>',1)
SELECT @var

PRINT 'output is identical to a statement with two whitespace carriage-return characters'
SET @var = CONVERT (XML,'<root>Dear Sir,

I am passing CR</root>',1)
SELECT @var

PRINT 'Why does this statement only display one space? There is an XML carriage-return AND a whitespace carriage-return character.'

--Make sure there is no space after &#xD; after you've copied and pasted the code
SET @var = CONVERT (XML,'<root>Dear Sir,&#xD;
I am passing CR</root>',1)
SELECT @var

最佳答案

在 Windows 中,行尾是 CR-LF。在 Unix 中,行尾是 CR。

在第一个示例中,您使用 CR-CR。我猜 SQL Server 将这些解释为 Unix 风格的行尾,给出两个空格。

你的第二个例子是在 Windows 中输入的,给出了 CR-LF-CR-LF。这被解释为 Windows 风格的行尾,给出两个空格。

你的第三个例子是 CR-CR-LF。这显然被解释为 Windows 风格的行结尾,给出一个空格和一个无与伦比的 CR。

如果您将第三个示例更改为使用 CR-LF 或 &#xD;&#xA; ,它将显示两个空格。

关于sql-server - 为什么在将字符串转换为 SQL Server XML 数据类型时回车符会消失?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2919952/

10-12 20:25