sql >> Databasteknik >  >> RDS >> Mysql

MySQL:hur tar man bort dubbla eller fler mellanslag från en sträng?

Här är ett gammalt trick som inte kräver reguljära uttryck eller komplicerade funktioner.

Du kan använda ersätt-funktionen 3 gånger för att hantera valfritt antal mellanslag, som så:

REPLACE('This is    my   long    string',' ','<>')

blir:

This<>is<><><><>my<><><>long<><><><>string

Sedan ersätter du alla förekomster av '><' med en tom sträng '' genom att slå in den i en annan ersättning:

REPLACE(
  REPLACE('This is    my   long    string',' ','<>'),
    '><',''
)

This<>is<>my<>long<>string

Sedan konverterar en sista ersättning "<>" tillbaka till ett enda mellanslag

REPLACE(
  REPLACE(
    REPLACE('This is    my   long    string',
      ' ','<>'),
    '><',''),
  '<>',' ')

This is my long string

Det här exemplet skapades i MYSQL (sätt en SELECT framför) men fungerar på många språk.

Observera att du bara behöver de 3 ersätt-funktionerna för att hantera valfritt antal tecken som ska ersättas.



  1. Lätt inköpsäventyr

  2. java - passerar array i oracle lagrad procedur

  3. Få den första, andra, tredje eller fjärde måndagen i en månad i SQLite

  4. Lönedatamodell