每当我将字符串解析为 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,

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 
 after you've copied and pasted the code
SET @var = CONVERT (XML,'<root>Dear Sir,
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 或 

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