Transcat SQL について質問がありました。以下は SQL コードです。
DECLARE @main nVARCHAR(max);
--there are over 4000 characters to @main
set @main = '01234567890123456789...';
Print len(@main)
@main の長さは正しいですが、コードを以下のように変更すると、たとえば 4007 になります。
DECLARE @main nVARCHAR(max);
--there are over 4000 characters to @main
set @main = N'01234567890123456789...';
Print len(@main)
@main の長さは常に 4000 になります。これは奇妙で、わかりません。別のことは、コードを以下に変更した場合です。
DECLARE @main nVARCHAR(max), @split nVARCHAR(500);
--there are 500 characters to @split
set @split = '01234567890123456789...';
set @main = @split + @split + @split + @split + @split + @split + @split + @split + @split + @split;
Print len(@main)
@main の長さが 4000 ですが、なぜですか? 「01234567890123456789...」の前に文字 N を追加しても問題ありませんか? @split を varchar(500) DECLARE @main nVARCHAR(max), @split VARCHAR(500); に変更すると、
--there are 500 characters to @split
set @split = '01234567890123456789...';
-- 10 @split
set @main = @split + @split + @split + @split + @split + @split + @split + @split + @split + @split;
Print len(@main)
@main の長さは正しいです。''01234567890123456789...' の前に文字 N を追加してもしなくても、@main の長さは常に 5000 です