1

私の列の1つがnvarchar(max)に設定されています。その列を照会すると、256文字しか返されません。データの長さを確認しましたが、7000文字を超えています。

キャラクターを失うのではなく、どうすればすべてのキャラクターを手に入れることができますか?

# select ValidationKey from UserProductAccountProvider 
4

2 に答える 2

2

SSMSで、[ツール]メニュー、[オプション]、[クエリ結果]、[SQL Server]、[結果からテキスト]の順に選択します。「各列に表示される最大文字数」の値を256から任意の数(最大8192)に変更します。[OK]をクリックすると、設定が保存されます。新しいクエリウィンドウを開始するまで、設定は実際には有効になりません。

marc_sが言ったように、コードから全文列を取得します。

于 2012-06-25T18:38:20.213 に答える
1

Davidが指摘したUI設定の横には、返されるデータの量に影響を与える2つの設定があります。

2:[ツール]メニュー、[オプション]、[クエリ結果]、[SQL Server]、[グリッドへの結果]の順に選択します。値「非XMLデータ」を変更します。この値は、使用可能なグリッド内の文字数を示します。あなたはコピーでそれらを得ることができます。デフォルトの制限はクリップボードの制限よりも大きいようです(最大で43kBの文字を取得します)。

3:スタジオには返されるデータの量を制限する設定があります。セッションごとです。[ツール]メニュー、[オプション]、[クエリ実行]の順に表示されます。'SETTEXTSIZE'の値を変更します。SQLバッチの値を検証および変更できます。

SELECT @@textsize;

たとえば、次のように100kBに設定できます。

SET textsize 102400;

通常、UI設定は約256と低くなっていますが、より多くのデータを利用できます。

これらの3つの設定はすべて、表示される(または取得される)ものに影響を与えます。

非常に大きな結果セットを本当に調べたい場合は、メッセージウィンドウに結果を出力できます。

DECLARE @s AS NVARCHAR(max);
DECLARE @LineLength AS int = 4000;
-- you might need a cursor when you have many rows;
SELECT TOP 1 @s = large_text FROM ....
WHILE LEN(@s) > @LineLength  BEGIN
    print SUBSTRING(@s,1, @LineLength);
    SET @s = SUBSTRING(@s,@LineLength, LEN(@s));
END
于 2012-12-10T13:33:23.227 に答える