ลบสตริงหลังจากอักขระเฉพาะที่สองเกิดขึ้นจากซ้าย


10

ฉันมีค่าประเภทนี้ในคอลัมน์ตาราง

154646@8@486
45465@6464@654

เป็นต้น

ฉันจะลบทุกสิ่งหลังจากอักขระตัวที่สองได้อย่างไร ฉันต้องการที่จะแสดง

154646@8
45465@6464

ฉันสามารถทำได้เฉพาะสำหรับทุกคนที่ @ แต่ไม่ใช่สำหรับที่สอง

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

ส่งคืน45แต่ไม่ใช่45 @ Tra

ขอบคุณ :-)


มี@สัญญาณจำนวนใดในสตริงหรือไม่?
Aaron Bertrand

คำตอบ:


16

คุณสามารถใช้พารามิเตอร์ตัวที่สามของcharindex()ที่ใช้เพื่อระบุตำแหน่งที่อยู่ในสตริงที่การค้นหาจะเริ่มขึ้น

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

ผลลัพธ์

45465@6464
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.