SQL SERVER RTRIM不是为我工作,建议吗?(Sql server rtrim not w

2019-09-22 12:00发布

我有点惊讶的是,我无法找到一个快速的解决方案是什么我要对付的,好像它会是对付常见的事。 我不能在我的选择查询摆脱尾随空格。 我想将数据放在一个CSV文件。 我很高兴地复制/粘贴SSMS结果“结果到文本”如果这是更容易。 无论哪种方式,我的查询是:

declare @maxDate date = (select MAX(TradeDate) from tblDailyPricingAndVol)

select p.Symbol, ','
from tblDailyPricingAndVol p
where p.Volume > 1000000 and p.Clse <= 40 and p.TradeDate = @maxDate
order by p.Symbol

并返回:

A       ,
AA      ,
ABB     ,

围绕p.Symbol场等RTRIM没有帮助。 如果我能找出最佳的解决方案,我有结果:

A,AA,ABB

等等。 任何考生? 在此先感谢一如既往..

Answer 1:

从你期望的结果,似乎要连接的symbol从所有行到一个逗号demimited字符串值。

为了做到这一点,你可以这样做: -

DECLARE @str VARCHAR(MAX)
SELECT @str = COALESCE(@str+',' ,'') + LTRIM(RTRIM((p.Symbol)))
FROM tblDailyPricingAndVol p
WHERE p.Volume > 1000000 and p.Clse <= 40 and p.TradeDate = @maxDate
ORDER by p.Symbol
SELECT @str
GO

另外的替代性方法还可以参考在这里

关于与您的问题RTRIM不工作,这似乎很奇怪。 为了安全起见,我添加了LTRIM + RTRIM上述查询。 但是,只要你的symbol列是某种varchar ,我们实在没有理由RTRIM到不行。

你能澄清的数据类型symbol列在表中?



Answer 2:

p.Symbol被定义为CHAR(8),和CHAR值不能被修整。 修整之前转换为N / VARCHAR(8)。



Answer 3:

由于使用的是SQL Server 2008中,你可以这样做:

SELECT  STUFF((SELECT ', ' + rtrim(p.Symbol)
          from tblDailyPricingAndVol p FOR XML PATH('')),1,2,'') as Symbol
WHERE    p.Volume > 1000000 
AND      p.Clse <= 40 
AND      p.TradeDate = @maxDate
ORDER BY p.Symbol


文章来源: Sql server rtrim not working for me, suggestions?