Supprimer la chaîne après l'apparition du deuxième caractère spécifique de gauche

10

J'ai ce type de valeurs dans la colonne du tableau

154646@8@486
45465@6464@654

etc.

Comment puis-je tout supprimer après le deuxième caractère @? Je dois afficher

154646@8
45465@6464

Je ne peux le faire que pour tous @ mais pas pour la seconde

SELECT REPLACE(LEFT('45@Tra@lala', CHARINDEX('@','45@Tra@lala')-1),'_',' ')

renvoie 45 mais pas 45 @ Tra

Merci :-)

Muflix
la source
Pourrait-il y avoir un certain nombre de @signes dans la chaîne?
Aaron Bertrand

Réponses:

16

Vous pouvez utiliser le troisième paramètre charindex()qui est utilisé pour spécifier où dans la chaîne la recherche commencera.

declare @S varchar(20) = '45465@6464@654';
select left(@S, charindex('@', @S, charindex('@', @S)+1)-1);

Résultat

45465@6464
Mikael Eriksson
la source