Haben Sie SET TEXTSIZE
verwendet? Sie möchten die von einer Abfrage zurückgegebenen Daten einschränken, haben aber festgestellt, dass es einfach nicht zu funktionieren scheint? Sie stellen fest, dass Ihr SELECT
Abfragen geben weiterhin die gesamte Textmenge zurück, unabhängig von TEXTSIZE
Wert?
Weiter lesen. Sie könnten diesen einen offensichtlichen Fehler machen.
Als ich zum ersten Mal auf TEXTSIZE
stieß Option, entschied ich mich für einen Schnelltest. Aber es hat nicht funktioniert. Ich habe es mehrmals mit verschiedenen TEXTSIZE
versucht Werte, aber nichts schien zu funktionieren.
"Warum funktioniert es nicht?" Ich habe mich gefragt.
Aber dann hat es Klick gemacht. Ich habe die Dokumentation erneut gelesen und festgestellt, dass ich nicht die richtige Zeichenfolgengröße für meine Datentypen verwendet habe.
Die TEXTSIZE
funktioniert nur mit den folgenden Datentypen:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- Text
- ntext
- Bild
Wenn Sie sich die ersten drei ansehen, stellen Sie fest, dass sie max
verwenden für die Argumentation. Dies bedeutet, dass sie die maximale Zeichenketten-/Speichergröße verwenden.
Ich habe es mit Spalten vom Typ nvarchar(100) getestet , varchar(255) usw. Kein Wunder, dass es nicht funktioniert hat.
Beispiel
Hier ist ein Beispiel, um zu demonstrieren, was ich meine.
USE-Test; DROP TABLE IF EXISTS TextSizeTest; CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SET TEXTSIZE 4;SELECT * FROM TextSizeTest;
Ergebnis:
+-------------+-------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Drachenfrucht | Ziehen Sie | Dr. |+-------------+-------------+---------------+Hier stelle ich die
TEXTSIZE
ein Wert auf4
, sondern der vollständige Text vonvarchar(50)
Säule bleibt erhalten. Diese Spalte wird vonSET TEXTSIZE
nicht beeinflusst . Und genau so soll es funktionieren.Es sind nur die anderen beiden Spalten betroffen, da sie
varchar(max)
sind undnvarchar(max)
bzw..Auch der Grund der nvarchar Spalte ist kürzer als varchar liegt daran, dass es zwei Bytes für jedes Zeichen verwendet (im Vergleich zu varchar ist ein Byte pro Zeichen).
Wenn Sie also Probleme mit
SET TEXTSIZE
haben , überprüfen Sie Ihren Datentyp.