2

実行しようとするとSSMSで:

SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))    

最初の 8000 文字しか表示されません。設定ツール>>オプション>>クエリ結果>> SQLサーバー>>グリッドへの結果は65534に設定され、テキストへの結果は8192に設定されています。

また、SQLCMDからこれを実行しようとすると

sqlcmd -S Server -E -y 0 -Q "SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))" -o out.txt

8000文字しか見えません。

フラグ-y 0は、最大 1 MB に設定することになっています。しかし、私は8000文字を超えません。

何が問題なのですか?

ありがとう、
_UB

4

3 に答える 3

4

REPLICATE出力は、データ型入力に基づいています。したがって、これはsqlcmdについて説明しています。

文字列式が varchar(max) または nvarchar(max) 型でない場合、REPLICATE は戻り値を 8,000 バイトで切り捨てます。8,000 バイトを超える値を返すには、文字列式を適切な大きな値のデータ型に明示的にキャストする必要があります。

だから、これを使ってSELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)

また、SSMS はすべてのテキスト データを表示したことはありません (クエリ アナライザーも表示しませんでした)。

于 2009-09-01T20:04:19.517 に答える
2

ここを参照してください:

http://www.sqlservercentral.com/articles/varchar(max)/67057/

于 2009-09-01T19:56:59.110 に答える
0

VARCHAR(MAX) は 8000 文字しか保持できません

ここを参照

MSDN から:

varchar [ ( n | max ) ] - 可変長の非 Unicode 文字データ。n は 1 ~ 8,000 の値です。max は、最大ストレージ サイズが 2^31-1 バイトであることを示します

ジョセフ (以下) が言うように、より多くを保持するには、テキストまたは ntext データ型を使用しますが、それを検索できるようにする場合は、何らかの形式のフルテキスト インデックスを有効にする必要があります。

より良いリンク

于 2009-09-01T19:53:11.737 に答える