gpt4 book ai didi

sql - 在FOR XML SELECT中使用CHAR(13)

转载 作者:行者123 更新时间:2023-12-04 14:09:47 25 4
gpt4 key购买 nike

我正在尝试使用CHAR(13)强制换行,但是问题是,我正在FOR XML Select语句中执行此操作:

SELECT 
STUFF((SELECT CHAR(13) + Comment
FROM
myTable
FOR XML PATH ('')) , 1, 1, '')

问题是,我没有得到实际的新行。相反,我得到:
#x0D;

因此,数据从字面上看起来像这样:
#x0D;First Line of Data#x0D;Second Line of Data#x0D;Etc

所以我试图只替换#x0D;在FOR XML之外使用CHAR(13):
REPLACE(SELECT 
STUFF((SELECT CHAR(13) + Comment
FROM
myTable
FOR XML PATH ('')) , 1, 1, '')), '#x0D;', CHAR(13))

这使我接近。它确实添加了换行符,但在每行的末尾还包含一个&,在第一行之后还包括每行的开始:
First Line of Data&
&Second Line of Data&
&Etc

最佳答案

感谢大家的帮助。

此处的最终目标是将Excel中的数据作为报表的一部分呈现。我敢肯定有一种更优雅的方法可以做到这一点,但是我至少可以通过以下方法获得想要的结果:

REPLACE (
REPLACE(
REPLACE(
(SELECT Comment FROM CallNotes WHERE ForeignId = a.ForeignId FOR XML PATH (''))
, '<Comment>', '')
, '</Comment>', CHAR(13) + CHAR(10))
, '&#x0D;', '') AS Comments

select语句本身就返回XML,这与我们期望的一样:
<comment>This is a comment</comment><comment>This is another comment</comment>

最里面的REPLACE只是去除了开始标签:
<comment> 

中间的REPLACE删除结束标记:
</comment> 

并将其替换为CHAR(13)+ CHAR(10)。而最外面的REPLACE摆脱了这一点:
&#x0D;  

(我仍然不知道那是哪里来的。)

因此,当将结果发送到Excel时,它在单元格中看起来像这样:
This is a comment.
This is another comment.

这正是我想要的。同样,我确定有更好的解决方案。但这至少目前是有效的。

关于sql - 在FOR XML SELECT中使用CHAR(13),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com