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
で問題が発生した場合 、データ型を確認してください。