2 votes

TrimTrailingBlanks dans SQL Server

Sur sp_help La documentation ne dit pas grand chose sur la propriété TrimTrailingBlanks d'un tableau :

TrimTrailingBlanks | varchar(35) | Trim the trailing blanks. Returns Yes or No.

Je me demande donc si c'est une bonne pratique de l'activer ou si je dois la laisser désactivée par défaut. Ce que je veux faire est de supprimer les blancs des chaînes de caractères de gauche et de droite, et (d'après le nom) c'est ce que cette propriété permet.

Maintenant, savez-vous si c'est une bonne pratique d'activer cette propriété ?

Je sais que je peux effectuer le trailling dans mon code d'application, mais il serait très agréable que cela soit fait automatiquement dans la base de données avant toute insertion ou mise à jour. Je ne sais pas si j'aurai un inconvénient si je change la valeur Non par Oui.

4voto

lavinio Points 12592

Cela a à voir avec la façon dont vides résiduels sont traitées. Cela n'a rien à voir avec leader vides. Il s'agit de savoir si les chaînes de longueur fixe sont remplies d'espaces jusqu'à leur longueur définie ou non.

Pour plus de détails, voir DÉFINIR ANSI_PADDING qui contient un beau tableau des effets. Le site sp_help rend compte des paramètres de ces colonnes au moment de leur définition.

Pour plus de sécurité, vous devez toujours nettoyer vos données avant de les stocker, qu'il s'agisse d'un remplissage ou d'un découpage, d'un réglage pour un cas spécifique ou autre. On ne sait jamais ce qu'une mise à jour de la base de données va changer.

1voto

Mitch Wheat Points 169614

Je couperais les espaces dans le code.

Vous devriez réfléchir à deux fois avant de modifier ce paramètre. TrimTrailingBlanks=No, est l'effet du paramètre ANSI_PADDING étant ON. ANSI_PADDING est activé par défaut pour les connexions de la plupart des clients (DB-Library étant l'exception). exception). De plus, ANSI_PADDING doit être activé lorsque vous utilisez des vues indexées et des colonnes informatiques indexées. Il peut y avoir d'autres situations où ANSI_PADDING est nécessaire dans les futures versions futures de SQL Server.

Ceci étant dit, ALTER TABLE est ce que vous pouvez utiliser :

SET ANSI_PADDING OFF
go
CREATE TABLE trimtrailer(a varchar(12) NOT NULL)
go
INSERT trimtrailer(a) VALUES ('Trimmer ')
go
SET ANSI_PADDING ON
go
ALTER TABLE trimtrailer ALTER COLUMN a varchar(12) NOT NULL
go
INSERT trimtrailer(a) VALUES ('Trimmer ')
go
SELECT '<' + a + '>' FROM trimtrailer
go
DROP TABLE trimtrailer

De Erland Sommarskog

0voto

gbn Points 197263

Le site DÉFINIR ANSI_PADDING sera déprécié (et sera toujours "ON" dans les versions ultérieures de SQL Server). J'ai lu quelque chose l'autre jour selon lequel cela se produira dans la prochaine version (après R2 ?).

Nous le définissons dans le code pour cette raison (un simple RTRIM, nous le faisons en SQL parce que nous avons plusieurs clients).

0voto

MAC_UNSW Points 1

Il faut toujours respecter ce paramètre pour CHAR type de champ.

Si TrimTrailingBlanks activé, par exemple, la valeur 'a' enregistrée dans votre champ char(3) deviendra 'a', ce qui semble assez normal, n'est-ce pas ? cependant, sans TrimTrailingBlanks activée, la valeur 'a' sera enregistrée sous la forme 'a', vous voyez maintenant la différence.

pour la comparaison des champs de la base de données sql, il ne provoque pas de mauvais effet comme '6 ' = '6' toujours vrai si vous l'utilisez pour la correspondance des chaînes de caractères.

Cependant, les choses deviennent un peu plus intéressantes lorsque l'on charge le champ dans des variables de programme, par exemple, le type de chaîne .net, maintenant si vous utilisez pour la comparaison sans utiliser la fonction trim(). tel que "6 " == "6" vous savez quel sera le résultat.

C'est une demande très valable à laquelle il faut prêter attention. TrimTrailingBlanks Cependant, la plupart du temps, la base de données conserve le paramètre cohérent d'une table à l'autre lorsqu'elle utilise la valeur par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X