วิธีที่ # 1
วิธีแรกคือการแทนที่ช่องว่างพิเศษระหว่างคำด้วยการรวมสัญลักษณ์ที่ผิดปกติเป็นเครื่องหมายชั่วคราว จากนั้นคุณสามารถแทนที่สัญลักษณ์เครื่องหมายชั่วคราวโดยใช้ฟังก์ชันแทนที่แทนการวนซ้ำ
นี่คือตัวอย่างโค้ดที่แทนที่ข้อความภายในตัวแปร String
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(@testString, ' ', '*^'), '^*', ''), '*^', ' ');
การทดสอบเวลาดำเนินการ # 1: ในการดำเนินการสิบครั้งของวิธีการแทนที่นี้เวลารอเฉลี่ยในการตอบกลับของเซิร์ฟเวอร์คือ 1.7 มิลลิวินาทีและเวลาดำเนินการทั้งหมดคือ 4.6 มิลลิวินาที การทดสอบเวลาดำเนินการ # 2: เวลารอโดยเฉลี่ยในการตอบกลับของเซิร์ฟเวอร์คือ 1.7 มิลลิวินาทีและเวลาดำเนินการทั้งหมดคือ 3.7 มิลลิวินาที
วิธี # 2
วิธีที่สองไม่สวยหรูเท่าวิธีแรก แต่ก็ทำให้งานสำเร็จ วิธีนี้ทำงานโดยการซ้อนคำสั่งสี่ (หรือมากกว่านั้น) แทนที่คำสั่งที่แทนที่ช่องว่างสองช่องด้วยช่องว่างหนึ่งช่อง
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
SELECT REPLACE(REPLACE(REPLACE(REPLACE(@testString,' ',' '),' ',' '),' ',' '),' ',' ')
การทดสอบเวลาดำเนินการ # 1: ในการดำเนินการสิบครั้งของวิธีการแทนที่นี้เวลารอเฉลี่ยในการตอบกลับของเซิร์ฟเวอร์คือ 1.9 มิลลิวินาทีและเวลาดำเนินการทั้งหมดคือ 3.8 มิลลิวินาที การทดสอบเวลาดำเนินการ # 2: เวลารอโดยเฉลี่ยในการตอบกลับของเซิร์ฟเวอร์คือ 1.8 มิลลิวินาทีและเวลาดำเนินการทั้งหมดคือ 4.8 มิลลิวินาที
วิธีที่ # 3
วิธีที่สามในการแทนที่ช่องว่างระหว่างคำคือการใช้การวนซ้ำแบบธรรมดา คุณสามารถตรวจสอบช่องว่างพิเศษในลูปในขณะที่แล้วใช้ฟังก์ชันแทนที่เพื่อลดช่องว่างพิเศษด้วยการวนซ้ำแต่ละครั้ง
DECLARE @testString AS VARCHAR(256) = ' Test text with random* spacing. Please normalize this spacing!';
WHILE CHARINDEX(' ',@testString) > 0
SET @testString = REPLACE(@testString, ' ', ' ')
SELECT @testString
การทดสอบเวลาดำเนินการ # 1: ในการดำเนินการสิบครั้งของวิธีการแทนที่นี้เวลารอเฉลี่ยในการตอบกลับของเซิร์ฟเวอร์คือ 1.8 มิลลิวินาทีและเวลาดำเนินการทั้งหมดเท่ากับ 3.4 มิลลิวินาที การทดสอบเวลาดำเนินการ # 2: เวลารอโดยเฉลี่ยในการตอบกลับของเซิร์ฟเวอร์คือ 1.9 มิลลิวินาทีและเวลาดำเนินการทั้งหมดคือ 2.8 มิลลิวินาที