0

I have the following in a SQL select statement. It's purpose is to query a number of results and have them returned seperated by comma's.

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

I am getting the results I need, however the number of characters in each result varies from 2 characters to 5 characters. So extra spaces are returned in the results.
Example: AA , AAA , BBBBB, BBBB , CCCCC

How can I change my substring so that there are not extra spaces when the returned result has less than 5 characters?

I think I understand what a Substring is but I don't quite understand what the XML PATH does, as I copied this when searching for a solution.

4

2 回答 2

0

您似乎在这里使用的 XML 路径的通常用法(尝试在引号中加上“值”之类的东西以暗示它的真正预期用途)是连接一些通常是一些行数的结果集, 成一行,其中所有结果都在一个字符串中。

既然如此,这里应该发生的是子字符串函数应该返回内部查询的整个结果,从第二个字符到一千个字符。效果是,如果您在上面的 select 语句中有五行结果,并且末尾没有 XML 路径,如下所示:

A
B
C
D
E

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

注意逗号后面的空格。似乎您正在尝试使用子字符串来摆脱第一个逗号,但这不会摆脱中间逗号后的空格。

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

但是,您可以查看类似这样的线程,以进一步阅读完成此任务的公认方法。

于 2013-10-03T22:25:58.363 回答
0

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

在 SQL Server 2008 中修剪文本字符串

于 2013-10-03T22:34:11.367 回答