我正在尝试在 sql server 2008 中编写存储过程,我需要删除表条目中不需要的空格。我将表中的条目分为 3 种类型。我的存储过程应该删除单个字母周围的空格,例如,
A G M words
到AGM words
words A G M words
到words AGM words
A G words
到AG words
我尝试了以下存储过程。
CREATE proc At1 @name nvarchar(100)
as
declare @start int
declare @temp1 nvarchar(100)
declare @temp nvarchar(100)
declare @NthPosition int
declare @N int
set @N=LEN(@name)
set @start=1
set @temp1=''
set @temp=''
set @NthPosition=charindex(' ',@name,@start)
if(@NthPosition<>0)
begin
while (@NthPosition<>0 and @N<>0)
begin
set @temp1=SUBSTRING(@name,@start,@NthPosition-1)
if(@temp<>'')
begin
if(len(@temp1)=1)
begin
set @temp=(@temp+@temp1)
end
else
begin
set @temp=(@temp+' '+@temp1)
end
end
else
begin
set @temp=@temp1
end
set @start=@NthPosition+1
set @N=@N-@NthPosition
set @NthPosition=0
set @NthPosition=CHARINDEX(' ',@name,@start)
end
end
else
begin
select @name
end
select @temp
GO
我用过,
exec At1 'apple A G M mango'
我的预期结果:apple AGM mango
但我的实际结果:apple
我无法弄清楚错误出在哪里。这方面的任何建议都会更有帮助。我尝试使用可以清除空间的计算列,我只能找到模式#3 的解决方案。我无法构建适合所有 3 种模式的计算列定义.....请分享您的想法对我有帮助