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