Hapus string setelah karakter spesifik kedua muncul dari kiri

10

Saya memiliki tipe nilai ini di kolom tabel

154646@8@486
45465@6464@654

dll.

Bagaimana saya bisa menghapus semuanya setelah karakter kedua @? Saya perlu ditampilkan

154646@8
45465@6464

Saya bisa melakukannya hanya untuk semua @ tetapi tidak untuk yang kedua

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

mengembalikan 45 tetapi tidak 45 @ Tra

Terima kasih :-)

Muflix
sumber
Mungkinkah ada sejumlah @tanda dalam string?
Aaron Bertrand

Jawaban:

16

Anda dapat menggunakan parameter ketiga charindex()yang digunakan untuk menentukan di mana dalam string pencarian akan dimulai.

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

Hasil

45465@6464
Mikael Eriksson
sumber