V SQL Server, SET TEXTSIZE
příkaz určuje velikost varchar(max) , nvarchar(max) , varbinary(max) , text , ntext a obrázek data vrácená SELECT
prohlášení.
Společnost Microsoft doporučuje tento text , ntext a obrázek budou v budoucí verzi SQL Server odstraněny, takže byste se měli vyvarovat používání těchto datových typů v nových vývojových pracích a plánovat úpravu aplikací, které je aktuálně používají, aby používaly varchar(max) , nvarchar(max) nebo varbinary(max) místo toho.
Příklad 1 – Základní použití
Zde je příklad nastavení TEXTSIZE
hodnotu.
SET TEXTSIZE 2048;
Tím se nastaví TEXTSIZE
až 2048 bajtů.
Příklad 2 – Zkontrolujte hodnotu TEXTSIZE
Můžete zkontrolovat aktuální TEXTSIZE
hodnotu s @@TEXTSIZE
:
VYBERTE @@VELIKOST TEXTU JAKO [Velikost textu];
Výsledek:
+--------------+| Velikost textu ||--------------|| 2048 |+-------------+
Příklad 3 – Jak to ovlivní výsledky dotazu
Zde je příklad, který ukazuje, jak TEXTSIZE
hodnota může ovlivnit výsledky vrácené v SELECT
dotaz.
Nejprve vytvořte tabulku, vložte nějaký text a poté ji vyberte.
USE Test;CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FROM TextSizeTest;
Výsledek (normální):
+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+--------------+--------------|| Dragonfruit | Dragonfruit | Dragonfruit |+-------------+--------------+---------------+To je to, co bychom normálně očekávali. Vrací celý text uvnitř každého sloupce, protože každý řádek textu zabírá méně než 2048 bajtů (což je to, co jsem nastavil
TEXTSIZE
až v předchozím příkladu).Ale co se stane, když zmenším
TEXTSIZE
hodnota:SET TEXTSIZE 4;SELECT * FROM TextSizeTest;Výsledek:
+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+--------------+--------------|| Dragonfruit | Přetáhnout | Dr |+-------------+--------------+---------------+První sloupec není ovlivněn, protože se nejedná o sloupec „max“. Chci říct, že je to varchar(50) a ne varchar(max) .
TEXTSIZE
Tato možnost ovlivňuje pouze sloupce, které jsou definovány pomocímax
.Druhý sloupec vrací první čtyři znaky. Je to proto, že jsme nastavili
TEXTSIZE
hodnotu na 4 a první čtyři znaky používají 4 bajty.Třetí sloupec vrací pouze první 2 znaky. Je to proto, že se jedná o nvarchar sloupec. V tomto případě první dva znaky používají 4 bajty.
Příklad 4 – Resetování hodnoty
Jedna věc, kterou je třeba si uvědomit, je, že specifikujete
SET TEXTSIZE 0
ve skutečnosti jej „resetuje“ na výchozí hodnotu 4096.SET TEXTSIZE 0;SELECT @@TEXTSIZE AS [@@TEXTSIZE];SELECT * FROM TextSizeTest;Výsledek:
+---------------+| @@VELIKOST TEXTU ||---------------|| 4096 |+-------------+(dotčen 1 řádek)+-------------+------------ --+----------------+| varchar50 | varcharMax | nvarcharMax ||-------------+--------------+--------------|| Dragonfruit | Dragonfruit | Dragonfruit |+-------------+--------------+---------------+(1 dotčený řádek)