web-dev-qa-db-fra.com

Comment utiliser LTRIM/RTRIM pour rechercher et remplacer des espaces de début/fin?

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.

7
Techie Joe

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.

10
RichardTheKiwi

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

2
techshaan

Fonction LTrim et Fonction RTrim :

  • La fonction LTrim pour supprimer les espaces principaux et la RTrim Fonction pour supprimer les espaces suivants d'une variable chaîne. 
  • Il utilise la fonction Découper pour supprimer les deux types d'espaces .

                  select LTRIM(RTRIM(' SQL Server '))
    

    sortie:

                             SQL Server
    
1
Laxmi
SELECT RTRIM(' Author ') AS Name;

La sortie sera sans espaces de fin.

Nom —————— ‘Auteur’

0

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*);
0
Kannan Kandasamy