sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man tar bort ett specifikt tecken från en sträng, endast när det är det första eller sista tecknet i strängen.

Ett sätt att hantera "trimma" kommatecken på det sättet skulle vara att använda ett CASE uttalande:

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

Detta är mycket självförklarande:CASE uttalandet tar hänsyn till tre situationer -

  • När strängen str har kommatecken på båda sidor,
  • När strängen str börjar med komma, men slutar inte med ett, och
  • När strängen str slutar med komma, men börjar inte med ett.

I det första fallet tas de första och sista tecknen bort; i det andra fallet tas tecknet längst till vänster bort; i det sista fallet tas det efterföljande tecknet bort.

Demo på sqlfiddle.



  1. Hur använder jag alias i where-satsen?

  2. CAST(DATETIME AS DATE) över WHERE-satsen

  3. Hämtar data från MYSQL baserat på veckonummer

  4. Ogiltigt parameternummer:inga parametrar var bundna