方法#1
第一种方法是用不常见的符号组合替换单词之间的多余空格作为临时标记。然后您可以使用替换函数而不是循环替换临时标记符号。
这是一个替换字符串变量中的文本的代码示例。
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
替换单词之间多余空格的第三种方法是使用简单的循环。您可以在 while 循环中检查多余的空格,然后使用 replace 函数在循环的每次迭代中减少多余的空格。
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 毫秒。