【问题标题】:TSQL Removing last comma from concatenated stringTSQL从连接字符串中删除最后一个逗号
【发布时间】:2013-10-07 13:12:30
【问题描述】:

我有一列包含连接值,但字符串末尾带有逗号。 如何删除现有值的最后一个逗号?

选择 m.Mais_Id , 奥特罗 (SELECT CAST(emp.First_Name + ' ' + emp.Last_Name + ', ' AS VARCHAR(MAX)) 从 帕托斯 左连接 雇员雇员 在 p.Pato_Id = emp.Pato_Id 在哪里 m.Pato_Id = p.Pato_Id 用于 XML 路径 ('') ) AS 名称 从 麦斯

我有这个:

Mais_Id Outro 名称 0 作为 Adn Meas、Fjds Poi、Csa Drop、 1 是 2 发球台,

这是假装的结果:

Mais_Id Outro 名称 0 As Adn Meas, Fjds Poi, Csa Drop 1 是 2 T恤一如既往

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

试试这个:

SELECT Mais_id, m.Outro, Substring(newColumn, 0, LEN(newColumn) - 1)
FROM (

SELECT 

    m.Mais_Id
    , m.Outro

    (SELECT CAST(emp.First_Name + ' ' + emp.Last_Name + ', ' AS VARCHAR(MAX)) as newColumn
    FROM 
        Patos p
    LEFT JOIN 
        Employee emp
    ON
        p.Pato_Id = emp.Pato_Id
        WHERE
        m.Pato_Id = p.Pato_Id
    FOR XML PATH ('')
    ) AS Names
FROM    
    Mais m
)

【讨论】:

    【解决方案2】:

    最简洁的方法是使用stuff() 函数:

    stuff(
        (
            select ', ' + cast(emp.First_Name + ' ' + emp.Last_Name as varchar(max)) 
            from Patos as p
                left outer join Employee as emp on p.Pato_Id = emp.Pato_Id
            where m.Pato_Id = p.Pato_Id
            for xml path(''), type
        ).value('.', 'nvarchar(max)')
    , 1, 2, '')  as Names
    

    请注意,使用value() 函数获取连接字符串也更安全,因此如果您有特殊字符,如 & 或

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多