Sử dụng SUBSTRING_INDEX() để tìm vị trí dấu '/' cuối cùng, kết hợp LEFT(), CHAR_LENGTH() và CONCAT() để thay thế phần tên thư mục.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (
-> FolderName VARCHAR(100),
-> FolderLocation VARCHAR(200)
-> );
Query OK, 0 rows affected (1.03 sec)
mysql> INSERT INTO DemoTable VALUES('CProgram', 'C:/AllPrograms/.....'), ('Images', 'E:/MyImage/home/garbage');
Query OK, 2 rows affected (0.13 sec)
Truy vấn UPDATE thay thế tên thư mục cuối
mysql> UPDATE DemoTable
-> SET FolderLocation = CONCAT(
-> LEFT(FolderLocation, CHAR_LENGTH(FolderLocation) - CHAR_LENGTH(SUBSTRING_INDEX(FolderLocation, '/', -1))),
-> FolderName
-> );
Query OK, 2 rows affected (0.16 sec)
Kết quả:
+------------+-------------------------+ | FolderName | FolderLocation | +------------+-------------------------+ | CProgram | C:/AllPrograms/CProgram | | Images | E:/MyImage/home/Images | +------------+-------------------------+ 2 rows in set (0.00 sec)
Phân tích:
SUBSTRING_INDEX(FolderLocation, '/', -1): lấy phần sau dấu '/' cuối (ten-thu-muc-cu)CHAR_LENGTH(...) - CHAR_LENGTH(...): tính độ dài phần đường dẫn chaLEFT(..., do_dai_cha): cắt lấy đường dẫn chaCONCAT(duong_dan_cha, FolderName): gắn tên thư mục mới