Uma maneira de lidar com "aparar" vírgulas como essa seria usar um
CASE
declaração:CASE
WHEN str LIKE ',%,' THEN SUBSTRING(str, 2, LEN(str)-2)
WHEN str LIKE ',%' THEN RIGHT(str, LEN(str)-1)
WHEN str LIKE '%,' THEN LEFT(str, LEN(str)-1)
ELSE str
END
Isso é muito auto-explicativo:o
CASE
declaração considera três situações - - Quando a string
str
tem vírgulas em ambos os lados, - Quando a string
str
começa em uma vírgula, mas não termina em uma, e - Quando a string
str
termina em uma vírgula, mas não começa em uma.
No primeiro caso, o primeiro e o último caracteres são removidos; no segundo caso, o caractere mais à esquerda é removido; no último caso, o caractere final é removido.
Demonstração no sqlfiddle.