最後の文字を削除するのに部分文字列を使用していますが、何が間違っているかわかりませんが、長い文字列を入力すると最後の文字は削除されません。以下 はレン(@XXXが)、それは最後の文字を削除しますが、入力の長さが98015それです小さいとき、私は SUBSTRING(@ XXX、0、(LEN(@XXX)-1))SQLサーバーのサブストリングが長い文字列に対して適切に処理されていません
を使用していますものです削除していません。制限はありますか?ここで何が間違っていますか?
最後の文字を削除するのに部分文字列を使用していますが、何が間違っているかわかりませんが、長い文字列を入力すると最後の文字は削除されません。以下 はレン(@XXXが)、それは最後の文字を削除しますが、入力の長さが98015それです小さいとき、私は SUBSTRING(@ XXX、0、(LEN(@XXX)-1))SQLサーバーのサブストリングが長い文字列に対して適切に処理されていません
を使用していますものです削除していません。制限はありますか?ここで何が間違っていますか?
私はちょうどそれをテストしたので、問題はあなたが結果を調べる方法であると思うと思うようになりました。 これは、クエリアナライザ(MS SQLを使用していることを前提としています)ではうまくいきます。以下のスクリプトは100,000文字分の文字列を生成し、最後の文字が何であるかを確認します。
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: -
検索文字列はどのように宣言していますか? 2バイト文字セットのデータで作業しているのではないかと思います。 –
どのデータベースを使用していますか? SQL Server Management Studioを使用していて、そこに返された文字列を調べている場合、最大値は約43 KBです。最後の文字が置換されているかどうかはわかりません。 –