313 votes

Supprimer tous les espaces d'une chaîne de caractères dans SQL Server

Quelle est la meilleure façon de supprimer tous les espaces d'une chaîne de caractères dans SQL Server 2008 ?

LTRIM(RTRIM(' a b ')) supprimerait tous les espaces à droite et à gauche de la chaîne, mais je dois également supprimer l'espace au milieu.

6 votes

Par "tous les espaces blancs", entendez-vous uniquement les espaces normaux ? Ou bien, voulez-vous dire les tabulations, CR, LF, et autres caractères qui peuvent s'afficher comme des espaces blancs ?

5 votes

@GordonLinoff : Je voulais parler d'espaces réguliers.

530voto

Alex K. Points 67805

Il suffit de le remplacer ;

SELECT REPLACE(fld_or_variable, ' ', '')

Edit : Juste pour clarifier ; il s'agit d'un remplacement global, il n'est pas nécessaire de trim() ou se préoccuper des espaces multiples pour char ou varchar :

create table #t (
    c char(8),
    v varchar(8))

insert #t (c, v) values 
    ('a a'    , 'a a'    ),
    ('a a  '  , 'a a  '  ),
    ('  a a'  , '  a a'  ),
    ('  a a  ', '  a a  ')

select
    '"' + c + '"' [IN], '"' + replace(c, ' ', '') + '"' [OUT]
from #t  
union all select
    '"' + v + '"', '"' + replace(v, ' ', '') + '"'
from #t 

Résultat

IN             OUT
===================
"a a     "     "aa"
"a a     "     "aa"
"  a a   "     "aa"
"  a a   "     "aa"
"a a"          "aa"
"a a  "        "aa"
"  a a"        "aa"
"  a a  "      "aa"

2 votes

Que faire s'il y a plusieurs espaces blancs entre les mots ? REPLACE n'en supprime qu'un à la fois. Il faut écrire une fonction définie par l'utilisateur qui supprime les espaces multiples.

0 votes

Cela ne semble pas remplacer les espaces blancs de fin de ligne.

7 votes

Il devrait remplacer tous les espaces blancs partout

51voto

Eduardo Crimi Points 777

J'utiliserais un REPLACE

select REPLACE (' Hello , How Are You ?', ' ', '' )

REMPLACER

37voto

SQL_King Points 11

S'il s'agit d'une mise à jour d'une table, il suffit d'exécuter cette mise à jour plusieurs fois jusqu'à ce qu'elle n'affecte plus aucune ligne.

update tableName
set colName = REPLACE(LTRIM(RTRIM(colName)), '  ', ' ')
where colName like '%  %'

19voto

Kaii Points 7818

REPLACE() fonction :

REPLACE(field, ' ', '')

12voto

marko Points 1986

Remplacement de t-sql http://msdn.microsoft.com/en-us/library/ms186862.aspx

replace(val, ' ', '')

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