要約: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)の問題