Método 1
El primer método es reemplazar espacios adicionales entre palabras con una combinación de símbolos poco común como marcador temporal. Luego, puede reemplazar los símbolos de marcadores temporales utilizando la función de reemplazo en lugar de un bucle.
Aquí hay un ejemplo de código que reemplaza el texto dentro de una variable de cadena.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(@testString, ' ', '*^'), '^*', ''), '*^', ' ');
Prueba de tiempo de ejecución n. ° 1: en diez ejecuciones de este método de reemplazo, el tiempo de espera promedio en las respuestas del servidor fue de 1.7 milisegundos y el tiempo total de ejecución fue de 4.6 milisegundos. Prueba de tiempo de ejecución n. ° 2: el tiempo medio de espera en las respuestas del servidor fue de 1,7 milisegundos y el tiempo total de ejecución fue de 3,7 milisegundos.
Método # 2
El segundo método no es tan elegante como el primero, pero también hace el trabajo. Este método funciona anidando cuatro (u opcionalmente más) declaraciones de reemplazo que reemplazan dos espacios en blanco con un espacio en blanco.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(REPLACE(@testString,' ',' '),' ',' '),' ',' '),' ',' ')
Prueba de tiempo de ejecución n. ° 1: en diez ejecuciones de este método de reemplazo, el tiempo de espera promedio en las respuestas del servidor fue de 1.9 milisegundos y el tiempo de ejecución total fue de 3.8 milisegundos. Prueba de tiempo de ejecución n. ° 2: el tiempo medio de espera en las respuestas del servidor fue de 1,8 milisegundos y el tiempo total de ejecución fue de 4,8 milisegundos.
Método # 3
El tercer método para reemplazar espacios adicionales entre palabras es usar un bucle simple. Puede verificar los espacios adicionales en un ciclo while y luego usar la función de reemplazo para reducir los espacios adicionales con cada iteración 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
Prueba de tiempo de ejecución n. ° 1: en diez ejecuciones de este método de reemplazo, el tiempo de espera promedio en las respuestas del servidor fue de 1.8 milisegundos y el tiempo total de ejecución fue de 3.4 milisegundos. Prueba de tiempo de ejecución n. ° 2: el tiempo medio de espera en las respuestas del servidor fue de 1,9 milisegundos y el tiempo total de ejecución fue de 2,8 milisegundos.