查询返回每个返回项目的尾随空白字符

时间:2013-10-03 21:53:02

标签: sql sql-server-2008 substring

我在SQL select语句中有以下内容。它的目的是查询一些结果并让它们以逗号分隔。

SUBSTRING((
        SELECT ', ' + s.jaopr
        FROM jjops s
        WHERE s.jajob = o.jajob
        ORDER BY s.jaseq
        FOR XML PATH('')
        ), 2, 1000)

我得到了我需要的结果,但每个结果中的字符数从2个字符到5个字符不等。因此,结果中会返回额外的空格 例: AA , AAA , BBBBB, BBBB , CCCCC

如何更改我的子字符串,以便在返回的结果少于5个字符时没有多余的空格?

我想我理解Substring是什么,但我不太明白XML PATH的作用,因为我在搜索解决方案时将其复制了。

2 个答案:

答案 0 :(得分:0)

通常使用XML Path,因为你似乎在这里使用它(尝试在引号中添加类似“值”的东西以获得它的真正意图用途的提示)是连接一些通常是一些的结果集行数,所有结果都在一个字符串中的单行。

在这种情况下,这里应该发生的是,substring函数应该返回内部查询的整个结果,从第二个字符到一千个。结果是,如果你在上面的select语句中有五行结果,那么结尾处没有XML路径,如下所示:

A
B
C
D
E

XML Path命令应该给你 ,A,B,C,D,E

注意逗号后面的空格。看起来您正在尝试使用子字符串来删除第一个逗号,但这不会消除中间逗号后面的空格。

如果我对这些假设是正确的,那么或许只是删除逗号周围引号内的空格会给你带来你想要的效果。

但是,您可以检查this one之类的线程,以便进一步阅读有关实现此目的的可接受方法。

答案 1 :(得分:0)

您是否希望存储在数据库中的值没有尾随(和/或前导)空格?如果是这样,那个问题已在这里得到解答:

Trimming text strings in SQL Server 2008