【问题标题】:Query Returns Trailing Blank Characters For Each Returned Item查询返回每个返回项目的尾随空白字符
【发布时间】:2013-10-10 18:46:56
【问题描述】:

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

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 是做什么的,因为我在寻找解决方案时复制了这个。

【问题讨论】:

    标签: sql sql-server-2008 substring


    【解决方案1】:

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

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

    A
    B
    C
    D
    E
    

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

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

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

    但是,您可以查看this one 之类的主题,以进一步了解实现此目的的公认方法。

    【讨论】:

      【解决方案2】:

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

      Trimming text strings in SQL Server 2008

      【讨论】:

      • 我发现我的数据库存储了尾随空格。这让我找到了解决方案,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多