Eliminar cadena después de que ocurra el segundo carácter específico desde la izquierda

10

Tengo este tipo de valores en la columna de la tabla

154646@8@486
45465@6464@654

etc.

¿Cómo puedo eliminar todo después del segundo carácter @? Necesito mostrar

154646@8
45465@6464

Puedo hacerlo solo para todos @ pero no para el segundo

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

devuelve 45 pero no 45 @ Tra

Gracias :-)

Muflix
fuente
¿Podría haber algún número de @signos en la cadena?
Aaron Bertrand

Respuestas:

16

Puede usar el tercer parámetro charindex()que se usa para especificar en qué parte de la cadena comenzará la búsqueda.

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

Resultado

45465@6464
Mikael Eriksson
fuente