Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como remover um caractere específico de uma string, somente quando for o primeiro ou o último caractere da string.


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.