Metodo n. 1
Il primo metodo consiste nel sostituire gli spazi aggiuntivi tra le parole con una combinazione di simboli insolita come indicatore temporaneo. Quindi è possibile sostituire i simboli marker temporanei utilizzando la funzione di sostituzione anziché un ciclo.
Ecco un esempio di codice che sostituisce il testo all'interno di una variabile String.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(@testString, ' ', '*^'), '^*', ''), '*^', ' ');
Test del tempo di esecuzione n. 1: in dieci esecuzioni di questo metodo di sostituzione, il tempo di attesa medio per le risposte del server è stato di 1,7 millisecondi e il tempo di esecuzione totale è stato di 4,6 millisecondi. Test del tempo di esecuzione n. 2: il tempo di attesa medio sulle risposte del server è stato di 1,7 millisecondi e il tempo di esecuzione totale è stato di 3,7 millisecondi.
Metodo n. 2
Il secondo metodo non è così elegante come il primo, ma fa anche il suo lavoro. Questo metodo funziona annidando quattro (o facoltativamente più) istruzioni di sostituzione che sostituiscono due spazi vuoti con uno spazio vuoto.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(REPLACE(@testString,' ',' '),' ',' '),' ',' '),' ',' ')
Test del tempo di esecuzione n. 1: in dieci esecuzioni di questo metodo di sostituzione, il tempo di attesa medio per le risposte del server è stato di 1,9 millisecondi e il tempo di esecuzione totale è stato di 3,8 millisecondi. Test del tempo di esecuzione n. 2: il tempo di attesa medio sulle risposte del server è stato di 1,8 millisecondi e il tempo di esecuzione totale è stato di 4,8 millisecondi.
Metodo n. 3
Il terzo metodo per sostituire gli spazi extra tra le parole consiste nell'utilizzare un semplice ciclo. Puoi controllare gli spazi extra in un ciclo while e quindi utilizzare la funzione di sostituzione per ridurre gli spazi extra con ogni iterazione del ciclo.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
WHILE CHARINDEX(' ',@testString) > 0
SET @testString = REPLACE(@testString, ' ', ' ')
SELECT @testString
Test del tempo di esecuzione n. 1: in dieci esecuzioni di questo metodo di sostituzione, il tempo di attesa medio per le risposte del server è stato di 1,8 millisecondi e il tempo di esecuzione totale è stato di 3,4 millisecondi. Test del tempo di esecuzione n. 2: il tempo di attesa medio per le risposte del server è stato di 1,9 millisecondi e il tempo di esecuzione totale è stato di 2,8 millisecondi.