การเปลี่ยนนามสกุลไฟล์ (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';