サブストリングを使用して最後の文字を削除していますが、何が問題だったのかわかりませんが、入力文字列が長い場合は最後の文字が削除されませんが、短い文字列の場合は最後の文字が削除されます。以下は私が使用しているものですSUBSTRING(@ XXX、0、(Len(@XXX)-1))
Len(@XXX)が小さい場合は最後の文字を削除しますが、入力の長さが98015の場合は削除しません。制限はありますか?ここで何が問題なのですか?
サブストリングを使用して最後の文字を削除していますが、何が問題だったのかわかりませんが、入力文字列が長い場合は最後の文字が削除されませんが、短い文字列の場合は最後の文字が削除されます。以下は私が使用しているものですSUBSTRING(@ XXX、0、(Len(@XXX)-1))
Len(@XXX)が小さい場合は最後の文字を削除しますが、入力の長さが98015の場合は削除しません。制限はありますか?ここで何が問題なのですか?
テストしたばかりですが、問題はないようです。問題は、結果をどのように調べるかにあると思います。これはクエリアナライザーで正常に機能し(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: -