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

MySQL: ลบอักขระ 2 ตัวแรกของทุกแถวด้วย SUBSTRING

เมื่อต้องการลบอักขระนำหน้าจำนวนคงที่ (เช่น 2 ตัวแรก) จากคอลัมน์ทุกแถว สามารถใช้ฟังก์ชัน SUBSTRING() (หรือ SUBSTR()) ร่วมกับ UPDATE

รูปแบบคำสั่ง

UPDATE table_name
SET column_name = SUBSTRING(column_name, 3)
WHERE condition;
  • SUBSTRING(str, pos) - ดึงสตริงตั้งแต่ตำแหน่ง pos จนจบ (ตำแหน่งเริ่มต้นที่ 1)
  • pos = 3 - ข้าม 2 ตัวแรก เริ่มจากตัวที่ 3
  • WHERE - กรองแถวที่ต้องการอัปเดต (สำคัญ: ป้องกันการลบข้อมูลที่ไม่ต้องการ)

ตัวอย่างการใช้งาน

1. สร้างตารางและเพิ่มข้อมูล

CREATE TABLE RemoveFirstTwoCharacterDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    StringValue VARCHAR(30),
    PRIMARY KEY (Id)
);

INSERT INTO RemoveFirstTwoCharacterDemo (StringValue) VALUES
('U:100'), ('S:20'), ('N/A'), ('T:8'), ('N/A'), ('W:99');

ข้อมูลก่อนอัปเดต:

+----+-------------+
| Id | StringValue |
+----+-------------+
|  1 | U:100       |
|  2 | S:20        |
|  3 | N/A         |
|  4 | T:8         |
|  5 | N/A         |
|  6 | W:99        |
+----+-------------+

2. ลบ 2 ตัวแรก เฉพาะแถวที่ไม่ใช่ 'N/A'

UPDATE RemoveFirstTwoCharacterDemo
SET StringValue = SUBSTRING(StringValue, 3)
WHERE StringValue <> 'N/A';

ผลลัพธ์: Query OK, 4 rows affected

3. ตรวจสอบข้อมูลหลังอัปเดต

SELECT * FROM RemoveFirstTwoCharacterDemo;
+----+-------------+
| Id | StringValue |
+----+-------------+
|  1 | 100         |
|  2 | 20          |
|  3 | N/A         |
|  4 | 8           |
|  5 | N/A         |
|  6 | 99          |
+----+-------------+

กรณีศึกษาเพิ่มเติม

ลบ 3 ตัวแรก

UPDATE t SET col = SUBSTRING(col, 4);

เก็บแค่ 5 ตัวแรก (ตัดท้าย)

UPDATE t SET col = SUBSTRING(col, 1, 5);

เก็บระหว่างตำแหน่ง 3-7

UPDATE t SET col = SUBSTRING(col, 3, 5);

ฟังก์ชันที่เกี่ยวข้อง

ฟังก์ชันคำอธิบาย
SUBSTRING(str, pos)ดึงตั้งแต่ pos จนจบ
SUBSTRING(str, pos, len)ดึงตั้งแต่ pos ยาว len ตัว
LEFT(str, len)ดึง len ตัวแรก (เท่ากับ SUBSTRING(str,1,len))
RIGHT(str, len)ดึง len ตัวสุดท้าย
SUBSTRING_INDEX(str, delim, count)ดึงส่วนก่อน/หลัง delimiter

คำเตือน: ทดสอบด้วย SELECT ก่อน UPDATE จริง และสำรองข้อมูล (backup) ก่อนทำการเปลี่ยนแปลงจำนวนมาก