Ho bisogno di pulire una colonna di stringhe con sia spazi bianchi che tabulazioni inclusi, all'inizio o alla fine delle stringhe (è un disastro!). Voglio mantenere solo uno spazio tra ogni parola. Supponiamo di avere la seguente stringa che comprende tutte le possibili situazioni:PostgeSQL regexp_replace() per mantenere solo uno spazio vuoto
mystring = ' one two three four '
- 2 spazi bianchi prima 'uno'
- 1 spazi tra 'uno' e 'due'
- 4 spaziature tra 'due' e 'tre'
- 2 linguette dopo 'tre'
- 1 scheda dopo 'quattro'
Ecco il modo in cui lo faccio:
- cancello iniziali e finali spazi bianchi
- cancello iniziali e finali schede
- sostituisco sia 'spazi bianchi ripetuto almeno due' e le schede da un unico spazio bianco
WITH
t1 AS (SELECT' one two three four '::TEXT AS mystring),
t2 AS (SELECT TRIM(both ' ' from mystring) AS mystring FROM t1),
t3 AS (SELECT TRIM(both '\t' from mystring) AS mystring FROM t2)
SELECT regexp_replace(mystring, '((){2,}|\t+)', ' ', 'g') FROM t3 ;
alla fine ho ottenere la stringa seguente, che sembra bello, ma ho ancora uno spazio bianco in coda ...
'one two three four '
Qualche idea a farlo in modo più semplice e soluzione di questo ultimo numero?
Grazie mille!
Qualsiasi aiuto? Qualcuno ha postato un commento ieri e l'ha cancellato ... Non ho avuto il tempo di guardarlo. Grazie ! – wiltomap