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

เปลี่ยนนามสกุลไฟล์ในคอลัมน์ Text ใน MySQL

การเปลี่ยนนามสกุลไฟล์ (File Extension) ในคอลัมน์ Text ด้วย MySQL

ใช้คำสั่ง UPDATE ร่วมกับฟังก์ชัน REPLACE() เพื่อแทนที่ส่วนขยายไฟล์

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

สร้างตารางเก็บนามสกุลไฟล์:

mysql> create table DemoTable (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ProgramExtension1 text,
    ProgramExtension2 text,
    ImageExtension text
);

เพิ่มข้อมูล:

mysql> insert into DemoTable(ProgramExtension1,ProgramExtension2,ImageExtension) values('.java','.c','.jpeg');

ข้อมูลก่อนเปลี่ยน:

+----+-------------------+-------------------+----------------+
| Id | ProgramExtension1 | ProgramExtension2 | ImageExtension |
+----+-------------------+-------------------+----------------+
| 1  | .java             | .c                | .jpeg          |
+----+-------------------+-------------------+----------------+

คิวรีเปลี่ยนนามสกุลทั้ง 3 คอลัมน์:

mysql> update DemoTable
    set ProgramExtension1 = replace(ProgramExtension1, '.java', '.py'),
        ProgramExtension2 = replace(ProgramExtension2, '.c', '.cpp'),
        ImageExtension = replace(ImageExtension, '.jpeg', '.png');
Query OK, 1 row affected (0.13 sec)

ผลลัพธ์หลังเปลี่ยน:

+----+-------------------+-------------------+----------------+
| Id | ProgramExtension1 | ProgramExtension2 | ImageExtension |
+----+-------------------+-------------------+----------------+
| 1  | .py               | .cpp              | .png           |
+----+-------------------+-------------------+----------------+

ข้อควรระวัง:

  • REPLACE() แทนที่ ทุกครั้งที่เจอ ในสตริง หากมี .java หลายที่ในคอลัมน์เดียว จะถูกแทนที่ทั้งหมด
  • ควรใช้เงื่อนไข WHERE จำกัดขอบเขต: WHERE ProgramExtension1 LIKE '%.java'
  • สำหรับการเปลี่ยนนามสกุลจริง ควรใช้ SUBSTRING_INDEX หรือ Regex เพื่อเปลี่ยนเฉพาะส่วนท้าย

ตัวอย่างปลอดภัยกว่า (เปลี่ยนเฉพาะส่วนท้าย):

UPDATE DemoTable 
SET ProgramExtension1 = CONCAT(SUBSTRING_INDEX(ProgramExtension1, '.', 1), '.py')
WHERE ProgramExtension1 LIKE '%.java';