2010-12-02 27 views
3

Je suis en train sans chance de trouver une méthode pour passerComment puis-je supprimer certains caractères avant l'espace dans T-SQL?

Bruno Miguel Alexandre en B. Miguel Alexandre

et

Bruno Alexandre dans B. Alexandre

juste en SQL afin que je puisse faire cette partie d'une grande requête dans une procédure de magasin

Quelqu'un peut-il m'aider? Une fonction que vous avez peut-être déjà?

Très apprécié.

+2

toujours la chaîne "bruno"? – gbn

+2

@gbn :) c'est un bon –

Répondre

6

Prendre le 1er caractère + tout de l'espace. Le 8000 est d'éviter LEN appelle autrement

LEFT(MyValue, 1) + '.' + SUBSTRING(MyValue, CHARINDEX(' ', MyValue), 8000) 
+0

+1, fonctionne efficacement avec n'importe quelle chaîne, pas seulement "bruno" ;-) –

+0

si simple :) beaucoup de thx! – balexandre

3

Essayez une sous-chaîne avec un charindex pour trouver l'espace

with MyTable as 
(
      SELECT 'Bruno Miguel Alexandre' as FullName 
    UNION SELECT 'Miguel Bruno Alexandre' 
    UNION SELECT 'Bruno Alexandre' 
    UNION SELECT 'Bruno Miguel' 
) 
SELECT 
    SubString (FullName, 1, 1) 
    + '.' 
    + SubString (FullName, CHARINDEX (' ', FullName, 1), 8000) 
FROM MyTable 

La sortie est

------------------------ 
B. Alexandre 
B. Miguel 
B. Miguel Alexandre 
M. Bruno Alexandre 

(4 row(s) affected) 
+0

vous savez, voir LEN dans SUBSTRING m'énerve ... ;-) – gbn

+0

@gbn vrai .. j'ai corrigé que –

+0

votre réponse est également très bon, +1 – balexandre