SET TEXTSIZEを使用しましたか クエリによって返されるデータを制限しますが、それが機能していないように見えることがわかりましたか? SELECT TEXTSIZEに関係なく、クエリは引き続き全量のテキストを返します 値?
読む。これは明らかな間違いである可能性があります。
TEXTSIZEに最初に遭遇したとき オプションで、クイックテストを実行することにしました。しかし、それはうまくいきませんでした。さまざまなTEXTSIZEで何度か試しました 値が、何も機能していないようでした。
「なぜそれが機能しないのですか?」疑問に思いました。
しかし、それからそれはクリックしました。ドキュメントを読み直して、データ型に正しい文字列サイズを使用していないことに気付きました。
TEXTSIZE 次のデータ型でのみ機能します:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- テキスト
- ntext
- 画像
最初の3つを見ると、maxを使用していることに注意してください。 議論のために。これは、最大の文字列/ストレージサイズを使用することを意味します。
タイプnvarchar(100)の列に対してテストしていました 、 varchar(255) 、など。それが機能していなかったのも不思議ではありません。
例
これが私の意味を示す例です。
USE Test;
DROP TABLE IF EXISTS TextSizeTest;
CREATE TABLE TextSizeTest (
varchar50 varchar(50),
varcharMax varchar(max),
nvarcharMax nvarchar(max)
);
INSERT INTO TextSizeTest
VALUES (
'Dragonfruit',
'Dragonfruit',
'Dragonfruit'
);
SET TEXTSIZE 4;
SELECT * FROM TextSizeTest;
結果:
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Drag | Dr | +-------------+--------------+---------------+
ここでは、TEXTSIZEを設定します 4の値 、ただし、varchar(50)の全文 カラムはそのまま残ります。この列はSET TEXTSIZEの影響を受けません 。そして、それはまさにそれが機能することになっている方法です。
varchar(max)であるため、影響を受けるのは他の2つの列だけです。 およびnvarchar(max) それぞれ。
また、 nvarcharの理由 列がvarcharよりも短い これは、各文字に2バイトを使用するためです( varchar と比較して) は1文字あたり1バイトです。
したがって、SET TEXTSIZEで問題が発生した場合 、データ型を確認してください。