В SQL Server, SET TEXTSIZE
оператор определя размера на varchar(max) , nvarchar(max) ,варбинарна(макс.) , текст , ntext , иизображение данни, върнати от SELECT
изявление.
Microsoft съветва този текст , ntext , иизображение ще бъде премахнат в бъдеща версия на SQL Server, така че трябва да избягвате използването на тези типове данни в нова разработка и да планирате да модифицирате приложенията, които в момента ги използват, за да използват varchar(max) , nvarchar(max) , или варбинарна(макс.) вместо това.
Пример 1 – Основна употреба
Ето пример за настройка на TEXTSIZE
стойност.
ЗАДАДЕТЕ РАЗМЕР НА ТЕКСТА 2048;
Това задава TEXTSIZE
до 2048 байта.
Пример 2 – Проверете стойността TEXTSIZE
Можете да проверите текущия TEXTSIZE
стойност с @@TEXTSIZE
:
ИЗБЕРЕТЕ @@TEXTSIZE КАТО [Размер на текста];
Резултат:
+------------+| Размер на текста ||------------|| 2048 |+-----------+
Пример 3 – Как влияе върху резултатите от заявката
Ето пример, който демонстрира как TEXTSIZE
стойност може да повлияе на резултатите, върнати в SELECT
заявка.
Първо нека създадем таблица, да вмъкнем текст и след това да го изберете.
ИЗПОЛЗВАЙТЕ тест;СЪЗДАЙТЕ ТАБЛИЦА TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max)); INSERT INTO TextSizeTestVALUES ('Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FROM TextSizeTest;
Резултат (нормален):
+------------+--------------+--------------+| varchar50 | varcharMax | nvarcharMax ||------------+--------------+---------------|| Драконов плод | Драконов плод | Драконов плод |+------------+--------------+--------------+предварително>Това е, което обикновено очакваме. Връща пълния текст във всяка колона, защото всеки ред текст заема по-малко от 2048 байта (което зададох
TEXTSIZE
до в предишния пример).Но ето какво се случва, ако намаля
TEXTSIZE
стойност:ЗАДАДЕТЕ TEXTSIZE 4;ИЗБЕРЕТЕ * ОТ TextSizeTest;Резултат:
+------------+--------------+--------------+| varchar50 | varcharMax | nvarcharMax ||------------+--------------+---------------|| Драконов плод | Плъзнете | д-р |+------------+--------------+--------------+предварително>Първата колона не е засегната, защото не е колона „макс“. Имам предвид, че това е varchar(50) а не varchar(max) .
TEXTSIZE
опцията засяга само колони, които са дефинирани сmax
.Втората колона връща първите четири знака. Това е така, защото зададохме
TEXTSIZE
стойност до 4, а първите четири знака използват 4 байта.Третата колона връща само първите 2 знака. Това е така, защото е nvarchar колона. В този случай първите два знака използват 4 байта.
Пример 4 – Нулиране на стойността
Едно нещо, което трябва да знаете, е, че указвате
SET TEXTSIZE 0
всъщност го „нулира“ до стойността по подразбиране от 4096.ЗАДАДЕТЕ TEXTSIZE 0;ИЗБЕРЕТЕ @@TEXTSIZE КАТО [@@TEXTSIZE];ИЗБЕРЕТЕ * ОТ TextSizeTest;Резултат:
+--------------+| @@TEXTSIZE ||--------------|| 4096 |+--------------+(1 ред засегнат)+------------+------------ --+--------------+| varchar50 | varcharMax | nvarcharMax ||------------+--------------+---------------|| Драконов плод | Драконов плод | Драконов плод |+------------+--------------+--------------+(1 засегнат ред)