Remover sequência após o segundo caractere específico ocorrer a partir da esquerda

10

Eu tenho esse tipo de valores na coluna da tabela

154646@8@486
45465@6464@654

etc.

Como posso remover tudo após o segundo caractere @? Eu preciso mostrar

154646@8
45465@6464

Eu posso fazer isso apenas para todos os @, mas não para o segundo

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

retorna 45, mas não 45 @ Tra

Obrigado :-)

Muflix
fonte
Poderia haver algum número de @sinais na string?
Aaron Bertrand

Respostas:

16

Você pode usar o terceiro parâmetro charindex()usado para especificar onde na cadeia a pesquisa será iniciada.

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

Resultado

45465@6464
Mikael Eriksson
fonte