Estou procurando a solução mais elegante para evitar a adição do último separador ';' após a última linha.
Por exemplo, o resultado deve ser
'Peter, Paul, Jill'
ao invés de
'Peter, Paul, Jill,'
DECLARE @p varchar(max) = '';
SELECT @P = @P + col2 +',' FROM tab1 WHERE coli = 1
RETURN @P
A solução
RETURN LEFT(@P, LEN(@P) -1);
funciona apenas se @P for longo o suficiente e, portanto, não for uma solução ...
Como posso resolver isso elegante e confiável?
Acho que muita gente resolve isso com a
STUFF
função. Encontrei um exemplo neste link e o adaptei.Como Dan Guzman aponta nos comentários, especificar TYPE e método de valor evita referências de entidade na string resultante para caracteres especiais como e comercial.
Sem
stuff
função, também podemos tentar oisnull
truque (reutilizando código já feito por Scott):