Avez-vous utilisé SET TEXTSIZE
limiter les données renvoyées par une requête, mais vous avez constaté que cela ne semble tout simplement pas fonctionner ? Vous constatez que votre SELECT
les requêtes continuent de renvoyer la totalité du texte, quel que soit le TEXTSIZE
valeur ?
Continuer à lire. Vous pourriez commettre cette erreur évidente.
Lorsque j'ai rencontré pour la première fois le TEXTSIZE
option, j'ai décidé d'exécuter un test rapide. Mais cela n'a pas fonctionné. J'ai essayé plusieurs fois avec différents TEXTSIZE
valeurs, mais rien ne semblait fonctionner.
"Pourquoi ça ne marche pas ?" Je me demandais.
Mais ensuite ça a cliqué. J'ai relu la documentation et réalisé que je n'utilisais pas la bonne taille de chaîne pour mes types de données.
Le TEXTSIZE
ne fonctionne que sur les types de données suivants :
- varchar(max)
- nvarchar(max)
- varbinaire(max)
- texte
- texte
- image
Si vous regardez les trois premiers, notez qu'ils utilisent max
pour l'argumentation. Cela signifie qu'ils utilisent la taille maximale de chaîne/stockage.
Je le testais sur des colonnes de type nvarchar(100) , varchar(255) , etc. Pas étonnant que cela ne fonctionne pas.
Exemple
Voici un exemple pour illustrer ce que je veux dire.
TEST UTILISER ; SUPPRIMER TABLE SI EXISTE TextSizeTest; CRÉER TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SET TEXTSIZE 4;SELECT * FROM TextSizeTest;
Résultat :
+-------------+-------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Fruit du dragon | Faites glisser | Dr |+-------------+-------------+---------------+Ici, je mets le
TEXTSIZE
valeur à4
, mais le texte complet duvarchar(50)
colonne reste intacte. Cette colonne n'est pas affectée parSET TEXTSIZE
. Et c'est exactement comme ça que ça doit fonctionner.Seules les deux autres colonnes sont affectées, car elles sont
varchar(max)
etnvarchar(max)
respectivement.Aussi, la raison pour laquelle le nvarchar la colonne est plus courte que le varchar est parce qu'il utilise deux octets pour chaque caractère (par rapport à varchar est un octet par caractère).
Donc, si vous rencontrez des problèmes avec
SET TEXTSIZE
, vérifiez votre type de données.