W SQL Server SET TEXTSIZE instrukcja określa rozmiar varchar(max) , nvarchar(maks.) , zmienna (maks.) , tekst , ntekst i obraz dane zwrócone przez SELECT oświadczenie.
Microsoft radzi, aby tekst , ntekst i obraz zostaną usunięte w przyszłej wersji SQL Server, więc należy unikać używania tych typów danych w nowych pracach programistycznych i planować modyfikowanie aplikacji, które obecnie ich używają, tak aby używały varchar(max) , nvarchar(maks.) lub zmienna (maks.) zamiast tego.
Przykład 1 – Podstawowe użycie
Oto przykład ustawienia TEXTSIZE wartość.
SET TEXTSIZE 2048;
To ustawia TEXTSIZE do 2048 bajtów.
Przykład 2 – Sprawdź wartość TEXTSIZE
Możesz sprawdzić aktualny TEXTSIZE wartość z @@TEXTSIZE :
SELECT @@TEXTSIZE AS [Text Size];
Wynik:
+-------------+ | Text Size | |-------------| | 2048 | +-------------+
Przykład 3 – jak to wpływa na wyniki zapytania
Oto przykład, który pokazuje, jak TEXTSIZE wartość może wpływać na wyniki zwracane w SELECT zapytanie.
Najpierw utwórzmy tabelę, wstawmy tekst, a następnie zaznaczmy.
USE Test;
CREATE TABLE TextSizeTest (
varchar50 varchar(50),
varcharMax varchar(max),
nvarcharMax nvarchar(max)
);
INSERT INTO TextSizeTest
VALUES (
'Dragonfruit',
'Dragonfruit',
'Dragonfruit'
);
SELECT * FROM TextSizeTest;
Wynik (normalny):
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Dragonfruit | Dragonfruit | +-------------+--------------+---------------+
Tego zwykle byśmy się spodziewali. Zwraca pełny tekst wewnątrz każdej kolumny, ponieważ każdy wiersz tekstu zajmuje mniej niż 2048 bajtów (co ustawiłem TEXTSIZE w poprzednim przykładzie).
Ale oto, co się stanie, jeśli zmniejszę TEXTSIZE wartość:
SET TEXTSIZE 4; SELECT * FROM TextSizeTest;
Wynik:
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Drag | Dr | +-------------+--------------+---------------+
Pierwsza kolumna pozostaje nienaruszona, ponieważ nie jest to kolumna „maks”. Mam na myśli to, że jest to varchar(50) a nie varchar(max) . TEXTSIZE opcja wpływa tylko na kolumny zdefiniowane za pomocą max .
Druga kolumna zwraca pierwsze cztery znaki. Dzieje się tak, ponieważ ustawiamy TEXTSIZE wartość na 4, a pierwsze cztery znaki używają 4 bajtów.
Trzecia kolumna zwraca tylko pierwsze 2 znaki. Dzieje się tak, ponieważ jest to nvarchar kolumna. W tym przypadku pierwsze dwa znaki używają 4 bajtów.
Przykład 4 – Zresetuj wartość
Należy pamiętać, że określenie SET TEXTSIZE 0 faktycznie „resetuje” go do domyślnej wartości 4096.
SET TEXTSIZE 0; SELECT @@TEXTSIZE AS [@@TEXTSIZE]; SELECT * FROM TextSizeTest;
Wynik:
+--------------+ | @@TEXTSIZE | |--------------| | 4096 | +--------------+ (1 row affected) +-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Dragonfruit | Dragonfruit | +-------------+--------------+---------------+ (1 row affected)