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
TEXTSIZE
til i det foregående eksempel).Men her er, hvad der sker, hvis jeg reducerer
TEXTSIZE
væ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) .
TEXTSIZE
indstillingen påvirker kun kolonner, der er defineret medmax
.Den anden kolonne returnerer de første fire tegn. Dette skyldes, at vi indstiller
TEXTSIZE
væ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 0
faktisk "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)