TSQL从连接的字符串中删除最后一个逗号
我有一个包含串联值的列,但是字符串的末尾有一个逗号。 如何删除现有值上的最后一个逗号 SELECT m.Mais_Id , m.Outro (SELECT CAST(emp.First_Name + ' ' + emp.Last_Name + ', ' AS VARCHAR(MAX)) 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 我有这个: Mais_Id Outro Names 0 As Adn Meas, Fjds Poi, Csa Drop, 1 Be 2 Tee As Been, 这是假装的结果: Mais_Id Outro Names 0 As Adn Meas, Fjds Poi, Csa Drop 1 Be 2 Tee As Been 试试这个:TSQL从连接的字符串中删除最后一个逗号,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个包含串联值的列,但是字符串的末尾有一个逗号。 如何删除现有值上的最后一个逗号 SELECT m.Mais_Id , m.Outro (SELECT CAST(emp.First_Name + ' ' + emp.Last_Name + ', ' AS VARCHAR(MAX)) FROM Patos p LEFT JOIN Employee emp ON p.Pato_Id = e
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
)
最简洁的方法是使用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函数获取连接字符串更安全,因此如果您有特殊字符,如&或<,则会正确显示。查看,最后一个字符被截断。