Entfernen Sie die Zeichenfolge, nachdem das zweite bestimmte Zeichen von links aufgetreten ist

10

Ich habe diese Art von Werten in der Tabellenspalte

154646@8@486
45465@6464@654

etc.

Wie kann ich alles nach dem zweiten @ Zeichen entfernen? Ich muss anzeigen

154646@8
45465@6464

Ich kann es nur für alle @ tun, aber nicht für die Sekunde

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

gibt 45 zurück, aber nicht 45 @ Tra

Vielen Dank :-)

Muflix
quelle
Könnte @die Zeichenfolge eine beliebige Anzahl von Zeichen enthalten?
Aaron Bertrand

Antworten:

16

Mit dem dritten Parameter können Sie charindex()angeben, wo in der Zeichenfolge die Suche beginnen soll.

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

Ergebnis

45465@6464
Mikael Eriksson
quelle