Dans SQL Server, le SET TEXTSIZE
l'instruction spécifie la taille de varchar(max) , nvarchar(max) , varbinaire(max) , texte , texte , et image données renvoyées par un SELECT
déclaration.
Microsoft conseille que le texte , texte , et image seront supprimés dans une future version de SQL Server, vous devez donc éviter d'utiliser ces types de données dans de nouveaux travaux de développement et prévoir de modifier les applications qui les utilisent actuellement pour utiliser varchar(max) , nvarchar(max) , ou varbinary(max) à la place.
Exemple 1 - Utilisation de base
Voici un exemple de définition de TEXTSIZE
valeur.
SET TEXTSIZE 2048 ;
Cela définit TEXTSIZE
à 2048 octets.
Exemple 2 - Vérifier la valeur TEXTSIZE
Vous pouvez vérifier le TEXTSIZE
actuel valeur avec @@TEXTSIZE
:
SELECT @@TEXTSIZE AS [Taille du texte] ;
Résultat :
+-------------+| Taille du texte ||-------------|| 2048 |+-------------+
Exemple 3 - Comment cela affecte les résultats de la requête
Voici un exemple qui montre comment le TEXTSIZE
la valeur peut affecter les résultats renvoyés dans un SELECT
requête.
Commençons par créer un tableau, insérons du texte, puis sélectionnons-le.
USE Test;CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FROM TextSizeTest;
Résultat (normal) :
+-------------+-------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Fruit du dragon | Fruit du dragon | Fruit du dragon |+-------------+-------------+---------------+C'est ce à quoi nous nous attendons normalement. Il renvoie le texte intégral à l'intérieur de chaque colonne car chaque ligne de texte occupe moins de 2048 octets (c'est ce que j'ai défini
TEXTSIZE
à dans l'exemple précédent).Mais voici ce qui se passe si je réduis le
TEXTSIZE
valeur :SET TEXTSIZE 4;SELECT * FROM TextSizeTest;Résultat :
+-------------+-------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Fruit du dragon | Faites glisser | Dr |+-------------+-------------+---------------+La première colonne n'est pas affectée, car ce n'est pas une colonne "max". Ce que je veux dire, c'est qu'il s'agit d'un varchar(50) et non varchar(max) . Le
TEXTSIZE
l'option n'affecte que les colonnes définies avecmax
.La deuxième colonne renvoie les quatre premiers caractères. C'est parce que nous avons défini le
TEXTSIZE
valeur à 4, et les quatre premiers caractères utilisent 4 octets.La troisième colonne ne renvoie que les 2 premiers caractères. C'est parce que c'est un nvarchar colonne. Dans ce cas, les deux premiers caractères utilisent 4 octets.
Exemple 4 - Réinitialiser la valeur
Une chose à savoir est que spécifier
SET TEXTSIZE 0
en fait le "réinitialise" à la valeur par défaut de 4096.SET TEXTSIZE 0;SELECT @@TEXTSIZE AS [@@TEXTSIZE];SELECT * FROM TextSizeTest;Résultat :
+--------------+| @@TAILLETEXTE ||--------------|| 4096 |+--------------+(1 ligne affectée)+-------------+------------ --+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Fruit du dragon | Fruit du dragon | Fruit du dragon |+-------------+-------------+---------------+(1 ligne affectée)