Sql 为什么是char(13)和#x2B;xml路径(';';)中的字符(10)不起作用?

Sql 为什么是char(13)和#x2B;xml路径(';';)中的字符(10)不起作用?,sql,sql-server,Sql,Sql Server,当我在查询中使用char(13)+char(10)时,它是有效的,但是当我在一个查询中使用char(13)+char(10)时,它对xml路径(“”)无效,取而代之的是这个字符&\x0D 我认为这是因为xml路径(“”)有两个,尽管可能不是这样。 我该怎么办 下面是我的代码示例: select d.title+char(13)+char(10)+ ( select c.title+char(13)+char(10)+ ( select a.title+b.title+ch

当我在查询中使用
char(13)+char(10)
时,它是有效的,但是当我在一个查询中使用
char(13)+char(10)
时,它对xml路径(“”)无效,取而代之的是这个字符
&\x0D
我认为这是因为xml路径(“”)
有两个
,尽管可能不是这样。
我该怎么办

下面是我的代码示例:

select d.title+char(13)+char(10)+
(
   select c.title+char(13)+char(10)+
   (
      select a.title+b.title+char(13)+char(10)
      from tbl_one a
      inner join tbl_two b on a.id=b.one
      where a.id=aa.id
      for xml path('')
   )
   from tbl_one aa on 
   inner join tbl_three c on aa.id=c.one
   where aa.id=aaa.id
   for xml path('')
)
from tbl_four d
inner join tbl_one aaa on d.one=aaa.id

为xml输出指定类型指令,如下所示:

select d.title+char(13)+char(10)+
(
   select c.title+char(13)+char(10)+
   ((
      select a.title+b.title+char(13)+char(10)
      from tbl_one a
      inner join tbl_two b on a.id=b.one
      where a.id=aa.id
      for xml path (''), type).value('(./text())[1]','nvarchar(max)')
   )
   from tbl_one aa on 
   inner join tbl_three c on aa.id=c.one
   where aa.id=aaa.id
   for xml path (''), type).value('(./text())[1]','nvarchar(max)')
from tbl_four d
inner join tbl_one aaa on d.one=aaa.id
参考:


rextester演示:

返回:

d
c
ab
这个版本:

select 'd'+char(13)+char(10)+
(
   select c+char(13)+char(10)+
   ((
      select a+b+char(13)+char(10)
      from (values ('a','b')) x (a,b)
      for xml path (''), type).value('(./text())[1]','nvarchar(max)')
   )
   from (values ('c')) x (c)
   for xml path (''), type).value('(./text())[1]','nvarchar(max)')
返回:

d
c
ab

我不久前就认出了这个问题的标题,你又问了吗?@DavidG是的,因为有通知告诉我我的问题是错误的,需要代码。我需要准备代码,所以我不能编辑这个问题,因为这是不可变的问题,所以我删除,直到我管理我的代码。谢谢!我不知道xml路径(“”)的这种类型。还有人告诉我用char(10)+char(10)代替char(13)+char(10),这也很有效。非常感谢你。祝你好运:)@dood很乐意帮忙!
d
c
ab