2

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

选择

    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恤一如既往
4

2 回答 2

1

最简洁的方法是使用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()函数连接起来也更安全,因此如果您有特殊字符(如 & 或 <),它将正确显示。

于 2013-10-01T11:44:56.650 回答
0

尝试这个:

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
)
于 2013-10-01T11:44:01.643 回答