Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So entfernen Sie ein bestimmtes Zeichen aus einer Zeichenfolge, nur wenn es das erste oder letzte Zeichen in der Zeichenfolge ist.

Eine Möglichkeit, mit solchen "trimmenden" Kommas umzugehen, wäre die Verwendung eines CASE Aussage:

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

Das ist ziemlich selbsterklärend:der CASE -Anweisung berücksichtigt drei Situationen -

  • Wenn die Zeichenkette str hat Kommas auf beiden Seiten,
  • Wenn die Zeichenkette str beginnt mit einem Komma, endet aber nicht mit einem, und
  • Wenn die Zeichenkette str endet mit einem Komma, beginnt aber nicht mit einem.

Im ersten Fall werden das erste und das letzte Zeichen entfernt; im zweiten Fall wird das Zeichen ganz links entfernt; im letzten Fall wird das abschließende Zeichen entfernt.

Demo auf sqlfiddle.