J'essaie actuellement de supprimer les espaces de début et de fin d'une colonne NVARCHAR (MAX) contenant des prix (utilisation de NVARCHAR en raison de l'importation de données de plusieurs systèmes d'exploitation avec des caractères impairs).
À ce stade, j'ai une commande t-sql qui peut supprimer les espaces de début/fin des prix statiques. Cependant, quand il s'agit d'utiliser cette même commande pour supprimer tous les prix, je suis perplexe.
Voici le script statique que j'ai utilisé pour supprimer un prix spécifique:
UPDATE *tablename* set *columnname* = LTRIM(RTRIM(2.50)) WHERE cost = '2.50 ';
Voici ce que j'ai essayé de supprimer tous les espaces de fin:
UPDATE *tablename* set *columnname* LIKE LTRIM(RTRIM('[.]')) WHERE cost LIKE '[.] ';
J'ai également essayé différentes variantes du% pour les caractères aléatoires, mais pour le moment je tourne les roues.
J'espère pouvoir exécuter une simple commande qui supprime tous les espaces de début et de fin de chaque cellule de cette colonne sans modifier aucune des données de colonne réelles.
Pour supprimer des espaces de gauche/droite, utilisez LTRIM/RTRIM. Ce que tu avais
UPDATE *tablename*
SET *columnname* = LTRIM(RTRIM(*columnname*));
aurait travaillé sur TOUTES les lignes. Pour minimiser les mises à jour si vous n'avez pas besoin de mettre à jour, le code de mise à jour est inchangé, mais l'expression LIKE dans la clause WHERE aurait été
UPDATE [tablename]
SET [columnname] = LTRIM(RTRIM([columnname]))
WHERE 32 in (ASCII([columname]), ASCII(REVERSE([columname])));
Remarque: 32 est le code ASCII du caractère espace.
Pour supprimer des espaces ... veuillez utiliser ltrim/rtrim LTRIM (String) RTRIM (String) Le paramètre String transmis aux fonctions peut être un nom de colonne, une variable, une chaîne littérale ou la sortie d'une fonction définie par l'utilisateur ou d'une requête scalaire.
SELECT LTRIM(' spaces at start')
SELECT RTRIM(FirstName) FROM Customers
En savoir plus: http://rockingshani.blogspot.com/p/sq.html#ixzz33SrLQ4Wi
Fonction LTrim et Fonction RTrim :
Il utilise la fonction Découper pour supprimer les deux types d'espaces .
select LTRIM(RTRIM(' SQL Server '))
sortie:
SQL Server
SELECT RTRIM(' Author ') AS Name;
La sortie sera sans espaces de fin.
Nom —————— ‘Auteur’
Je comprends que cette question concerne SQL Server 2012, mais si le même scénario s'applique à SQL Server 2017 ou à SQL Azure, vous pouvez utiliser directement Trim comme ci-dessous:
UPDATE *tablename*
SET *columnname* = trim(*columnname*);