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 :-)


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.