質問1:8000キャラクターはどのように登場し、どこで注意すべきですか?
nを8000に設定すると、8000文字が有効になります。char、nchar、nvarchar、およびvarcharについての精度、スケール、および長さ(Transact-SQL)の参照に注意する必要があります。対照的に、nをmax(引用符なし)に設定すると、SQL Serverは最大バイト数を格納(および返し)します(引用文で述べたように)。
質問2:この列に対する.netデータリーダークエリは、常に100 000+文字の完全な結果を返しますか?
これは.Net(SQL Serverではない)の質問ですが、.Netデータリーダーはバイトストリームをフェッチします。バイトは文字ではなく、SQL Serverは(文字ではなく)バイトを返します。nが8000に設定され、データ型がnvarcharの場合、SQL Serverは最大8000バイトを返します。これは、.Netデータリーダーが4000ユニコード文字として解釈できます。nが8000に設定され、データ型がvarcharの場合、SQL Serverは最大8000バイトを返します。これは、.Netデータリーダーが最大8000 ANSI文字であると解釈できます。nがmaxに設定され、データ型がnvarcharの場合、SQL Serverは最大2 ^ 31-1バイトを返します。これは.Netデータリーダーが(2 ^ 31-1)/ 2文字までと解釈できます。nがmaxに設定され、データ型がvarcharの場合、SQL Serverは最大2 ^ 31-1バイトを返します。これは、.Netデータリーダーが最大2 ^ 31-1 ANSI文字であると解釈できます。
より多くの「文字」(より正確にはバイト)を格納できるため、charまたはvarchar(ncharまたはnvarcharではなく)を使用することを選択した場合、多くのUnicode文字に同等のANSI文字がないことに注意する必要があります(したがって、世界のユーザーは、ローカライズされた文字やネイティブ文字をアプリで見ることができなくなります)。
varchar(max)
は一度呼び出さtext
れ、異なるデータ型として扱われたことに注意してください。