un problème fréquent avec l’importation de données dans une base de données est un espace blanc indésirable au début ou à la fin des chaînes.
Les espaces blancs de début et de fin peuvent causer des problèmes lorsque vous essayez d’identifier des enregistrements en double, tentez de joindre des tables sur des colonnes de chaîne ou interrogez simplement une valeur particulière.
heureusement, la fonction TRIM SQL supprime cet espace blanc embêtant de début et de fin des chaînes.
un espace blanc est un caractère dans une chaîne qui représente un espace horizontal ou vertical en typographie., En d’autres termes: onglets, sauts de ligne, retours chariot et, oui, espaces.
Un espace blanc est la valeur du caractère, tout comme ‘A’, ‘B’ et ‘C’ ont une valeur. Nous ne pouvons tout simplement pas toujours voir les espaces blancs lors de l’impression.
et comme tout autre caractère, un espace blanc a une valeur décimale dans la table ASCII. Ce petit fait est très pratique lorsque vous essayez d’identifier un caractère d’espace blanc à l’aide d’une commande SQL.,
The TRIM Function
Safari Books online has a nice snippet on the TRIM command:
ANSI SQL Standard Syntax
TRIM( FROM ]
target_string
)
The default for the first parameter, LEADING | TRAILING | BOTH
, is ‘BOTH’.
The default for is a space char(32)
.,
en d’autres termes, si vous spécifiez uniquement letarget_string
(le seul paramètre requis), tous les espaces de début et de fin seront coupés.
Example
Accept defaults to trim BOTH leading and ending space characters:
SELECT ' Hello World ',
TRIM(' Hello World ');+-----------------+-------------------------+
| Hello World | TRIM(' Hello World ') |
+-----------------+-------------------------+
| Hello World | Hello World |
+-----------------+-------------------------+
Remarque: la fonction TRIM pour les versions SQL Server 2016 et inférieures n’a pas d’arguments spécifiant le ou les caractères à découper à partir d’une chaîne. Ils ne rognent que les caractères d’espace de début/fin.
exemple
supprimer uniquement les caractères astérisques ( * )., Notez que même si un seul ‘*’ est spécifié comme paramètre, TRIM supprime tous les astérisques en tête (*), quel qu’en soit le nombre.
SELECT '*** Hello World **',
TRIM(LEADING '*' FROM '*** Hello World **');+--------------------+---------------------------------------------+
| *** Hello World ** | TRIM(LEADING '*' FROM '*** Hello World **') |
+--------------------+---------------------------------------------+
| *** Hello World ** | Hello World ** |
+--------------------+---------------------------------------------+
Un exemple d’espace blanc scénario
Imaginez que vous voulez convertir votre boutique de jouets à l’inventaire des dossiers à partir de feuilles de calcul d’une base de données SGBDR. Vous chargez avec succès une table de base de données à partir de la feuille de calcul.,
vous vérifiez la charge en comparant la feuille de calcul d’origine avec la nouvelle table de base de données. Les résultats semblent vraiment bons.
Maintenant, vous voulez trouver combien de jouet de canards ont jamais été reçu, si vous interrogez la base de données:
SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;Empty set (0.00 sec)
Attendez, quoi?! Cela ne peut pas être juste, aucun enregistrement n’est retourné? Vous regardez directement la table des jouets dans la base de données, vous pouvez voir les 11 enregistrements avec toy_name = ‘duck’.,
Si vous exécutez cette pratique peu instruction SQL pour faire des blancs de l’espace visible:
Pour en savoir plus sur la fonction REMPLACER, cliquez ici.
Ah, ha! Maintenant, vous pouvez voir tous les toy_names ont un espace de début, et certains d’entre eux ont d’autres caractères d’espace blanc de fin.,
vous exécutez une série D’instructions de mise à jour à l’aide de la fonction TRIM pour les caractères d’espace blanc de début et de fin: tabs char(9)
, line-feeds char(10)
, carriage-returns char(13)
, et spaces char(32)
.,
Vous exécutez le SÉLECTIONNER de nouveau fait des blancs de l’espace visible et, ouf, ils sont tous partis:
Maintenant, vous pouvez compter votre les canards avec confiance:
SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;