I SQL Server er SET TEXTSIZE sætning angiver størrelsen på varchar(max) , nvarchar(max) , varbinary(max) , tekst , ntekst og billede data returneret af en SELECT erklæring.
Microsoft anbefaler denne tekst , ntekst og billede vil blive fjernet i en fremtidig version af SQL Server, så du bør undgå at bruge disse datatyper i nyt udviklingsarbejde og planlægge at ændre applikationer, der i øjeblikket bruger dem til at bruge varchar(max) , nvarchar(max) eller varbinary(max) i stedet.
Eksempel 1 – Grundlæggende brug
Her er et eksempel på indstilling af TEXTSIZE værdi.
SET TEXTSIZE 2048;
Det sætter TEXTSIZE til 2048 bytes.
Eksempel 2 – Tjek TEXTSIZE-værdien
Du kan tjekke den aktuelle TEXTSIZE værdi med @@TEXTSIZE :
VÆLG @@TEXTSIZE SOM [Tekststørrelse];
Resultat:
+--------------+| Tekststørrelse ||-------------|| 2048 |+--------------+
Eksempel 3 – Hvordan det påvirker forespørgselsresultaterne
Her er et eksempel, der viser, hvordan TEXTSIZE værdi kan påvirke resultaterne, der returneres i en SELECT forespørgsel.
Lad os først oprette en tabel, indsætte noget tekst og derefter vælge den.
USE Test;CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FRA TextSizeTest;
Resultat (normalt):
+-------------+--------------+--------------+| varchar50 | varcharMax | nvarcharMax ||-------------+----------------------------|| Dragonfruit | Dragonfruit | Dragonfruit |+-------------+--------------+---------------+Dette er, hvad vi normalt forventer. Det returnerer den fulde tekst inde i hver kolonne, fordi hver række af tekst fylder mindre end 2048 bytes (hvilket er, hvad jeg indstillede
TEXTSIZEtil i det foregående eksempel).Men her er, hvad der sker, hvis jeg reducerer
TEXTSIZEværdi:INDSTIL TEKSTSTØRRELSE 4;VÆLG * FRA TextSizeTest;Resultat:
+-------------+--------------+--------------+| varchar50 | varcharMax | nvarcharMax ||-------------+----------------------------|| Dragonfruit | Træk | Dr |+--------------------------+---------------+Den første kolonne er upåvirket, fordi den ikke er en "max" kolonne. Hvad jeg mener er, det er en varchar(50) og ikke varchar(max) .
TEXTSIZEindstillingen påvirker kun kolonner, der er defineret medmax.Den anden kolonne returnerer de første fire tegn. Dette skyldes, at vi indstiller
TEXTSIZEværdi til 4, og de første fire tegn bruger 4 bytes.Den tredje kolonne returnerer kun de første 2 tegn. Dette er fordi det er en nvarchar kolonne. I dette tilfælde bruger de to første tegn 4 bytes.
Eksempel 4 – Nulstil værdien
En ting du skal være opmærksom på er at angive
SET TEXTSIZE 0faktisk "nulstiller" den til standardværdien på 4096.INDSTIL TEKSTSTØRRELSE 0;VÆLG @@TEKSTSTØRRELSE SOM [@@TEKSTSTØRRELSE]; VÆLG * FRA TextSizeTest;Resultat:
+--------------+| @@TEXTSIZE ||-------------|| 4096 |+---------------+(1 række påvirket)+-------+------ --+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+----------------------------|| Dragonfruit | Dragonfruit | Dragonfruit |+-------------+--------------+--------------+(1 række påvirket)