Usuń ciąg po pojawieniu się drugiego określonego znaku od lewej

10

Mam tego typu wartości w kolumnie tabeli

154646@8@486
45465@6464@654

itp.

Jak mogę usunąć wszystko po drugim znaku @? Muszę wyświetlić

154646@8
45465@6464

Mogę to zrobić tylko dla wszystkich @, ale nie na sekundę

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

zwraca 45, ale nie 45 @ Tra

Dziękuję Ci :-)

Muflix
źródło
Czy w ciągu może znajdować się dowolna liczba @znaków?
Aaron Bertrand

Odpowiedzi:

16

Możesz użyć trzeciego tego parametru charindex(), aby określić, gdzie w ciągu rozpocznie się wyszukiwanie.

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

Wynik

45465@6464
Mikael Eriksson
źródło