ใช้การผสมผสาน REVERSE(), SUBSTRING(), INSTR() เพื่อหาตำแหน่งอักขระสุดท้ายแล้วตัดส่วนหน้า
ไวยากรณ์
UPDATE yourTableName SET yourColumnName = REVERSE(SUBSTRING(REVERSE(yourColumnName), INSTR(REVERSE(yourColumnName), '.')));
ตัวอย่างการใช้งาน
1. สร้างตารางและข้อมูล
mysql> create table DemoTable (Words text);
mysql> insert into DemoTable values('Value1. Value2 .Value3.Value4.Value5');
2. อัปเดตเก็บเฉพาะส่วนก่อนจุดสุดท้าย
mysql> update DemoTable
-> set Words = REVERSE(SUBSTRING(REVERSE(Words), INSTR(REVERSE(Words), '.')));
ผลลัพธ์
+--------------------------------+ | Words | +--------------------------------+ | Value1. Value2 .Value3.Value4. | +--------------------------------+
คำอธิบายตรรกะ
REVERSE(Words)→ กลับสตริง:5eluV.4eluV.3eluV. 2eluV.1eluVINSTR(..., '.')→ หาตำแหน่งจุดแรก (ซึ่งคือจุดสุดท้ายของสตริงเดิม) = 2SUBSTRING(..., 2)→ ตัดตั้งแต่ตำแหน่ง 2 ถึงสุด:.4eluV.3eluV. 2eluV.1eluVREVERSE(...)→ กลับคืนมา:Value1. Value2 .Value3.Value4.
วิธีง่ายกว่า (MySQL 8.0+)
-- ใช้ REGEXP_SUBSTR (MySQL 8.0+) SELECT REGEXP_SUBSTR(Words, '^.*\\.'); -- ทุกอย่างจนถึงจุดสุดท้าย -- หรือใช้ SUBSTRING_INDEX (ถ้าต้องการก่อนจุดสุดท้าย ไม่รวมจุด) SELECT SUBSTRING_INDEX(Words, '.', LENGTH(Words) - LENGTH(REPLACE(Words, '.', '')));