Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เปลี่ยนสตริงให้เหลือเฉพาะส่วนหลังเครื่องหมาย underscore ใน MySQL

การตัดสตริงให้เหลือส่วนหลังอักขระพิเศษด้วย 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 อัตโนมัติ