0

我正在使用子字符串删除最后一个字符,但不确定出了什么问题,但是当输入字符串很长时它不会删除最后一个字符,但是它会删除较短字符串的最后一个字符。下面是我使用的 SUBSTRING(@XXX,0,(Len(@XXX)-1))

当 Len(@XXX) 很小时,它正在删除最后一个字符,但当输入长度为 98015 时,它不会删除。有没有限制?这里有什么问题?

4

1 回答 1

0

我刚刚对其进行了测试,看起来还不错,这使我认为问题在于您如何检查结果。这在查询分析器中运行良好(假设您使用的是 MS SQL),下面的脚本会生成一个 100,000 个字符长的字符串(由 '-' 字符和结尾的 '0' 字符组成),然后检查最后一个字符是什么。

declare @longstring varchar(max)
declare @lastchar varchar(1)
declare @i int

set @longstring = ''
set @lastchar = ''
set @i = 1
while @i <= 100000
begin
    set @longstring = @longstring + '-'
    set @i = @i + 1
end
set @longstring = @longstring + '0'
print 'Original long string: ' + @longstring
set @lastchar = SUBSTRING(@longstring, LEN(@longstring), 1)
print 'Last character before substring: ' + @lastchar
--Last character before substring: 0
set @longstring = SUBSTRING(@longstring, 0, len(@longstring) - 1)
set @lastchar = SUBSTRING(@longstring, LEN(@longstring), 1)
print 'Long string after substring: ' + @longstring
print 'Last character after substring: ' + @lastchar
--Last character after substring: -
于 2012-05-02T19:47:28.040 回答