Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come rimuovere un carattere specifico da una stringa, solo quando è il primo o l'ultimo carattere nella stringa.

Un modo per gestire le virgole di "rifilatura" del genere sarebbe utilizzare un CASE dichiarazione:

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

Questo è molto autoesplicativo:il CASE dichiarazione considera tre situazioni -

  • Quando la stringa str contiene virgole su entrambi i lati,
  • Quando la stringa str inizia con una virgola, ma non finisce con una e
  • Quando la stringa str finisce con una virgola, ma non inizia con una.

Nel primo caso vengono rimossi il primo e l'ultimo carattere; nel secondo caso viene rimosso il carattere più a sinistra; nell'ultimo caso, il carattere finale viene rimosso.

Demo su sqlfiddle.