MSSQL_varchar(8000)の問題

要約:MSSQLのVARCHAR(8000)の問題


----------- MS SQL LOB変数

---でもvarchar型(最大)での実験で指定されたシングルは8000以上使用することはできません

@マックスvarchar型(max)を宣言する

セット@最大=複製( 'A'、9000)

selectlen(@max)--8000

      、DATALENGTH(@max) - 8000

- 必要な「組み合わせ」のアプローチよりもされるように

@マックスvarchar型(max)を宣言する

セット@最大=複製( 'A'、9000) - 8000

マックス@設定= MAX + @(、8000 'のB')を複製します

selectlen(@max)--16000

      、DATALENGTH(@max) - 16000

-----状況

qry2 VARCHAR(8000)、@、QRY1 VARCHAR(8000)、@、QRY VARCHAR(MAX)@ DECLARE

SELECT @のQRY1 = REPLICATE( 'A'、5000)、

       @ qry2 = REPLICATE( 'B'、5000)

@たqry = @ QRY1 + @ qry2を選択

SELECTLEN(@qry)、実際に--8000 => 10000ません??

      LEN(@ QRY1) - 5000

      LEN(@ qry2)--5000

- どのように修正します

QRY = CAST(VARCHAR(MAX)AS @ QRY1)+ CAST(VARCHAR(MAX)AS @ qry2)@ SELECT - 変換QRY1、VARCHAR(MAX)にqry2、実際には、限りQRY1又はqry2があるようにVARCHAR(MAXであります)正しい結果を思い付きます

SELECTLEN(@qry)、 - 10000

      LEN(@ QRY1) - 5000

      LEN(@ qry2)--5000

2005年に--- SP

PROCを変更#C

@i varchar型(最大)出力

として

I =複製( 'A'、8000)@設定

私= @ @設定私がレプリケート( 'B'、8000)+

selectlen(@i)

GO

--PS:テキスト、NTEXT画像データは、当該マシン変数(ローカル変数)のこのタイプは有効ではありません。

、@ kはvarchar型(max)を宣言する

       @i varchar型(最大)

I @セット=( 'C'、10000)複製 - のみ8000までも、単一のターゲティング(最大)

EXEC#Cの@k出力

セット@ I = @ K + @ I

selectlen(@k)、 - 16000

        LEN(@i)--24000

/ *

2000 SPでテキスト出力で、次のような問題を持っているようです

  • text型=>エラーの出力パラメータの値を指定することはできません:代入演算子の操作は、引数として、テキストデータ型を取ることができません。
  • テキストVARCHAR(+)と組み合わせることができません

3、この制限値8000 =>エラーを克服するために結合するには、テキストの複数:データ・タイプ演算子の無効なオペレータが追加等しいが、種類はテキストに等しい:.演算子operatorテキストデータ型が無効です追加します。

* /

オリジナル:ビッグボックス  MSSQL_varchar(8000)の問題


おすすめ

転載: www.cnblogs.com/chinatrump/p/11505190.html