Metoda nr 1
Pierwsza metoda polega na zastąpieniu dodatkowych spacji między słowami nietypową kombinacją symboli jako tymczasowy znacznik. Następnie możesz zastąpić tymczasowe symbole znaczników za pomocą funkcji replace zamiast pętli.
Oto przykład kodu, który zastępuje tekst w zmiennej String.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(@testString, ' ', '*^'), '^*', ''), '*^', ' ');
Test czasu wykonywania nr 1: W dziesięciu uruchomieniach tej metody zastępczej średni czas oczekiwania na odpowiedzi serwera wyniósł 1,7 milisekundy, a całkowity czas wykonania wyniósł 4,6 milisekundy. Test czasu wykonywania nr 2: średni czas oczekiwania na odpowiedzi serwera wyniósł 1,7 milisekundy, a całkowity czas wykonania wyniósł 3,7 milisekundy.
Metoda nr 2
Druga metoda nie jest tak elegancka jak pierwsza, ale również wykonuje zadanie. Ta metoda działa poprzez zagnieżdżenie czterech (lub opcjonalnie więcej) instrukcji zamiany, które zastępują dwie spacje jedną spacją.
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(REPLACE(@testString,' ',' '),' ',' '),' ',' '),' ',' ')
Test czasu wykonywania nr 1: W dziesięciu uruchomieniach tej metody zastępczej średni czas oczekiwania na odpowiedzi serwera wyniósł 1,9 milisekundy, a całkowity czas wykonania 3,8 milisekundy. Test czasu wykonywania nr 2: średni czas oczekiwania na odpowiedzi serwera wyniósł 1,8 milisekundy, a całkowity czas wykonania - 4,8 milisekundy.
Metoda nr 3
Trzecią metodą zastępowania dodatkowych spacji między słowami jest użycie prostej pętli. Możesz sprawdzić dodatkowe spacje w pętli while, a następnie użyć funkcji replace w celu zmniejszenia dodatkowych spacji przy każdej iteracji pętli.
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 czasu wykonywania nr 1: W dziesięciu uruchomieniach tej metody zastępczej średni czas oczekiwania na odpowiedzi serwera wyniósł 1,8 milisekundy, a całkowity czas wykonania 3,4 milisekundy. Test czasu wykonywania nr 2: średni czas oczekiwania na odpowiedzi serwera wyniósł 1,9 milisekundy, a całkowity czas wykonania 2,8 milisekundy.