Sql-server – Remove string after second specific character occures from left

sql server

I have this type of values in table column

154646@8@486
45465@6464@654

etc.

How can i remove everything after second @ character ? I need to display

154646@8
45465@6464

I can do it only for all @ but not for second

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

returns 45 but not 45@Tra

Thank you 🙂

Best Answer

You can use the third parameter of charindex() that is used to specify where in the string the search will start.

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

Result

45465@6464