sql >> Database >  >> RDS >> Sqlserver

Hoe een specifiek teken uit een tekenreeks te verwijderen, alleen wanneer dit het eerste of laatste teken in de tekenreeks is.

Een manier om op die manier om te gaan met het "bijsnijden" van komma's is het gebruik van een CASE verklaring:

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

Dit spreekt voor zich:de CASE verklaring beschouwt drie situaties -

  • Als de tekenreeks str heeft komma's aan beide kanten,
  • Als de tekenreeks str begint met een komma, maar eindigt niet met één, en
  • Als de tekenreeks str eindigt op een komma, maar begint niet in één.

In het eerste geval worden de eerste en de laatste tekens verwijderd; in het tweede geval wordt het meest linkse teken verwijderd; in het laatste geval wordt het volgteken verwijderd.

Demo op sqlfiddle.



  1. SQL Server 2008 Genereer een reeks datumtijden

  2. Hoe RTRIM_ORACLE() werkt in MariaDB

  3. hoe array_agg() te laten werken zoals group_concat() van mySQL

  4. Wanneer is het beter om vlaggen als bitmasker op te slaan in plaats van een associatieve tabel te gebruiken?