我正在使用substring来删除最后一个字符,但不确定出了什么问题,但是当输入字符串为long时它不会删除最后一个字符,但是它会删除较短字符串的最后一个字符。 以下是我正在使用的内容 SUBSTRING(@ XXX,0,(LEN(@XXX)-1))
当Len(@XXX)很小时,它会移除最后一个字符,但当输入长度为98015时,它不会移除。有限制吗?这里有什么问题?
答案 0 :(得分: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: -