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)