sql >> Databáze >  >> RDS >> Sqlserver

Jak odstranit konkrétní znak z řetězce, pouze pokud je to první nebo poslední znak v řetězci.

Jedním ze způsobů, jak se vypořádat s podobným "ořezáváním" čárek, by bylo použití CASE prohlášení:

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

Toto je velmi samovysvětlující:CASE příkaz uvažuje tři situace -

  • Když je řetězec str má na obou stranách čárky,
  • Když je řetězec str začíná čárkou, ale nekončí jedničkou a
  • Když je řetězec str končí čárkou, ale nezačíná jedničkou.

V prvním případě jsou odstraněny první a poslední znaky; ve druhém případě je odstraněn znak zcela vlevo; v posledním případě je koncový znak odstraněn.

Ukázka na sqlfiddle.



  1. Vkládání položek do rozbalovací nabídky bootstrap z tabulky SQL

  2. Jak se připojit má mnoho tabulek vztahů a načtení výsledku podle typu

  3. C# SQLServer načte výsledky a umístí je ve formátu .csv

  4. pořadí sloupců v příkazu SELECT * - garantováno?