过去我曾使用此网站寻求各种帮助,在这种情况下,我在搜索框中找不到任何内容,因此如果其他地方存在此问题,我深表歉意。
在 sql server 2005 中,我有几个存储过程可以更改各种代码,最近我们创建了一个函数,可以将空格添加到定义的字符串中。所以理论上,我将一个字符串传递给它,我得到一个4块的结果。当我手动运行它并定义实际文本时,它分裂得很好(我得到#### 0000 012 返回)但是当我执行SP内的函数,我得到#### 0012 0012。有什么原因吗?
在将字符串传递给我的函数之前,我已经为字符串设置了一个打印命令,它打印“####0000012”,之后的打印是“#### 0012 0012”
下面是函数代码,没有声明:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[udf_addspaces](@string varchar(255),@lengthbetween int)
returns varchar(100)
as
BEGIN
declare @i int, @stringlen float, @output varchar(255), @outputofloop varchar(4)
set @stringlen = LEN(@string)/@lengthbetween
set @output =''
set @i = 0
while @i <= @stringlen
BEGIN
set @outputofloop = left(@string,@lengthbetween)
if @lengthbetween < LEN(@string)
BEGIN
set @string = right(@string,LEN(@string)-@lengthbetween)
END
set @output = @output + @outputofloop +' '
set @i = @i+1
END
return @output
END
这是执行此操作的 SP 的位:
set @Consignment2 = (@Consignment) + rtrim(@Check14)
print @Consignment2
set @Consignment2 = dbo.udf_addspaces(@Consignment2,4)
print @Consignment2
以下是它打印的行:(注意:#### 替换 4 位数字,出于安全原因已删除)
####0000012
#### 0012 0012
问候,卢克 M