sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo eliminar un carácter específico de una cadena, solo cuando es el primer o el último carácter de la cadena.

Una forma de lidiar con comas de "recorte" como esa sería usar un CASE declaración:

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

Esto se explica por sí mismo:el CASE declaración considera tres situaciones -

  • Cuando la cadena str tiene comas en ambos lados,
  • Cuando la cadena str comienza en una coma, pero no termina en uno, y
  • Cuando la cadena str termina en coma, pero no comienza en uno.

En el primer caso, se eliminan el primero y el último carácter; en el segundo caso, se elimina el carácter más a la izquierda; en el último caso, se elimina el carácter final.

Demostración en sqlfiddle.