使用 xml 将不同行的数据连接到一列时,如何删除 space?
How to remove space when concatenating data from different rows into one column using xml?
我正在尝试将不同行的数据合并到一列中,这只解决了一个小问题。
declare @RitID int = 16
select ...,
( select distinct
ISNULL(LTRIM(RTRIM(r2.LotNr)), LTRIM(RTRIM(r.LotNr))) + '+' as 'data()'
from tblExtraBestemming eb2
inner join tblRit r2 on eb2.RitID = r2.RitID
where eb2.BestemmingID = eb.BestemmingID
and eb2.BestemmingTypeID = eb.BestemmingTypeID
and ( (eb.CombinedChildExtraBestemmingID is null and eb2.RitID = @RitID)
or
(eb.CombinedChildExtraBestemmingID is not null and eb2.RitID in (select r4.RitID from tblRit r4 where r4.MasterRitID = @RitID) )
)
for XML PATH('')
) as LotNr
from tblExtraBestemming eb
where ...
这 returns 列 LotNr 的正确数据,像这样
GTT18196
GTT18197
GTT18198+ GTT18199
现在我唯一的问题是结果中第三行 +
符号后的 space,我怎样才能摆脱它?
我期待这个结果
GTT18196
GTT18197
GTT18198+GTT18199
PS,其实每一行的末尾还有一个+
,但是被客户端去掉了。我想我最好已经提到了这一点。
编辑
我查了下数据,没有space在数据的末尾和数据的开头
编辑
按照@Larnu
的建议更新了查询
编辑
如果我检查 table 中的数据,这就是结果
select '/' + r.LotNr + '/' from tblRit r where r.RitID in (50798, 50799)
COLUMN1
-------
/GTT18198/
/GTT18199/
所以在我看来数据前后都没有字符
只需从您的查询中删除 AS 'data()'
(在上述情况下不需要)。
如果尾部 +
有问题,将其移至开头并使用 STUFF
函数从结果中删除第一个字符。
我正在尝试将不同行的数据合并到一列中,这只解决了一个小问题。
declare @RitID int = 16
select ...,
( select distinct
ISNULL(LTRIM(RTRIM(r2.LotNr)), LTRIM(RTRIM(r.LotNr))) + '+' as 'data()'
from tblExtraBestemming eb2
inner join tblRit r2 on eb2.RitID = r2.RitID
where eb2.BestemmingID = eb.BestemmingID
and eb2.BestemmingTypeID = eb.BestemmingTypeID
and ( (eb.CombinedChildExtraBestemmingID is null and eb2.RitID = @RitID)
or
(eb.CombinedChildExtraBestemmingID is not null and eb2.RitID in (select r4.RitID from tblRit r4 where r4.MasterRitID = @RitID) )
)
for XML PATH('')
) as LotNr
from tblExtraBestemming eb
where ...
这 returns 列 LotNr 的正确数据,像这样
GTT18196
GTT18197
GTT18198+ GTT18199
现在我唯一的问题是结果中第三行 +
符号后的 space,我怎样才能摆脱它?
我期待这个结果
GTT18196
GTT18197
GTT18198+GTT18199
PS,其实每一行的末尾还有一个+
,但是被客户端去掉了。我想我最好已经提到了这一点。
编辑
我查了下数据,没有space在数据的末尾和数据的开头
编辑
按照@Larnu
编辑
如果我检查 table 中的数据,这就是结果
select '/' + r.LotNr + '/' from tblRit r where r.RitID in (50798, 50799)
COLUMN1
-------
/GTT18198/
/GTT18199/
所以在我看来数据前后都没有字符
只需从您的查询中删除 AS 'data()'
(在上述情况下不需要)。
如果尾部 +
有问题,将其移至开头并使用 STUFF
函数从结果中删除第一个字符。