การตัดสตริงให้เหลือส่วนหลังอักขระพิเศษด้วย SUBSTRING และ LIKE
เมื่อต้องการเก็บเฉพาะส่วนของข้อความที่อยู่หลังอักขระหนึ่ง (เช่น underscore _) เราสามารถใช้ SUBSTRING() ร่วมกับ LOCATE() หรือใช้ตำแหน่งคงที่หากรูปแบบคงที่
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (UserName VARCHAR(100));
Query OK, 0 rows affected (0.69 sec)
mysql> INSERT INTO DemoTable VALUES('Smith_John');
mysql> INSERT INTO DemoTable VALUES('Smith_Adam');
mysql> INSERT INTO DemoTable VALUES('Smith_David');
mysql> INSERT INTO DemoTable VALUES('Smith_Mike');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------------+
| UserName |
+-------------+
| Smith_John |
| Smith_Adam |
| Smith_David |
| Smith_Mike |
+-------------+
4 rows in set (0.00 sec)
คำสั่ง UPDATE ตัดส่วนหน้าทิ้ง เก็บเฉพาะหลัง underscore
mysql> UPDATE DemoTable SET UserName = SUBSTRING(UserName, 7)
WHERE UserName LIKE 'Smith_%';
Query OK, 4 rows affected (0.12 sec)
ตรวจสอบข้อมูลหลังอัปเดต
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+----------+
| UserName |
+----------+
| John |
| Adam |
| David |
| Mike |
+----------+
4 rows in set (0.00 sec)
คำอธิบาย
SUBSTRING(UserName, 7): ตัดสตริงเริ่มจากตำแหน่งที่ 7 (นับจาก 1) เพราะ 'Smith_' มี 6 ตัวอักษรWHERE UserName LIKE 'Smith_%': กรองเฉพาะแถวที่ขึ้นต้นด้วย 'Smith_'- วิธีทั่วไปกว่า: ใช้
SUBSTRING(UserName, LOCATE('_', UserName) + 1)เพื่อหาตำแหน่ง underscore อัตโนมัติ