In SQL Server ist das SET TEXTSIZE
-Anweisung gibt die Größe von varchar(max) an , nvarchar(max) , varbinary(max) , Text , ntext und Bild Daten, die von einem SELECT
zurückgegeben werden Aussage.
Microsoft empfiehlt diesen Text , ntext und Bild wird in einer zukünftigen Version von SQL Server entfernt, daher sollten Sie die Verwendung dieser Datentypen in neuen Entwicklungsarbeiten vermeiden und planen, Anwendungen, die sie derzeit verwenden, so zu ändern, dass sie varchar(max) verwenden , nvarchar(max) , oder varbinary(max) stattdessen.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel für die Einstellung von TEXTSIZE
Wert.
SETZE TEXTSGRÖSSE 2048;
Das setzt TEXTSIZE
bis 2048 Byte.
Beispiel 2 – Überprüfen Sie den TEXTSIZE-Wert
Sie können die aktuelle TEXTSIZE
überprüfen Wert mit @@TEXTSIZE
:
SELECT @@TEXTSIZE AS [Textgröße];
Ergebnis:
+-------------+| Textgröße ||-------------|| 2048 |+---------------------+
Beispiel 3 – Auswirkungen auf die Abfrageergebnisse
Hier ist ein Beispiel, das zeigt, wie die TEXTSIZE
-Wert kann die in einem SELECT
zurückgegebenen Ergebnisse beeinflussen Abfrage.
Lassen Sie uns zuerst eine Tabelle erstellen, Text einfügen und ihn dann auswählen.
USE Test;CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FROM TextSizeTest;
Ergebnis (normal):
+-------------+-------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Drachenfrucht | Drachenfrucht | Drachenfrucht |+-------------+-------------+---------------+Das würden wir normalerweise erwarten. Es gibt den vollständigen Text in jeder Spalte zurück, da jede Textzeile weniger als 2048 Bytes belegt (was ich mit
TEXTSIZE
eingestellt habe zu im vorherigen Beispiel).Aber Folgendes passiert, wenn ich
TEXTSIZE
reduziere Wert:SET TEXTSIZE 4;SELECT * FROM TextSizeTest;Ergebnis:
+-------------+-------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Drachenfrucht | Ziehen Sie | Dr. |+-------------+-------------+---------------+Die erste Spalte ist nicht betroffen, da es sich nicht um eine „Max“-Spalte handelt. Was ich meine ist, es ist ein varchar(50) und nicht varchar(max) . Die
TEXTSIZE
Option wirkt sich nur auf Spalten aus, die mitmax
definiert sind .Die zweite Spalte gibt die ersten vier Zeichen zurück. Das liegt daran, dass wir die
TEXTSIZE
gesetzt haben Wert auf 4, und die ersten vier Zeichen verwenden 4 Bytes.Die dritte Spalte gibt nur die ersten 2 Zeichen zurück. Das liegt daran, dass es sich um ein nvarchar handelt Säule. In diesem Fall verwenden die ersten beiden Zeichen 4 Bytes.
Beispiel 4 – Wert zurücksetzen
Eine Sache, die Sie beachten sollten, ist die Angabe von
SET TEXTSIZE 0
tatsächlich „setzt“ es auf den Standardwert von 4096 zurück.SET TEXTSIZE 0;SELECT @@TEXTSIZE AS [@@TEXTSIZE];SELECT * FROM TextSizeTest;Ergebnis:
+--------------+| @@TEXTSIZE ||--------------|| 4096 |+-------------+(1 Zeile betroffen)+-------------+------------ --+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Drachenfrucht | Drachenfrucht | Drachenfrucht |+-------------+-------------+---------------+(1 Zeile betroffen)