Vấn đề
Cần cập nhật cột TEXT, chỉ giữ lại 7 ký tự cuối của mỗi chuỗi.
Giải pháp: UPDATE + SUBSTR với vị trí âm
UPDATE DemoTable SET Strength = SUBSTR(Strength, -7, 7);
Ví dụ minh họa
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (Strength TEXT);
mysql> INSERT INTO DemoTable VALUES
('John is a good programmer'),
('Chris is a good player in cricket'),
('Bob is good in algorithm');
Xem dữ liệu trước
mysql> SELECT * FROM DemoTable;
+-----------------------------------+ | Strength | +-----------------------------------+ | John is a good programmer | | Chris is a good player in cricket | | Bob is good in algorithm | +-----------------------------------+
Cập nhật giữ 7 ký tự cuối
mysql> UPDATE DemoTable SET Strength = SUBSTR(Strength, -7, 7);
Query OK, 3 rows affected (0.46 sec)
Kết quả sau
mysql> SELECT * FROM DemoTable;
+----------+ | Strength | +----------+ | grammer | | cricket | | gorithm | +----------+
Giải thích
SUBSTR(str, -7, 7): Vị trí âm -7 = tính từ cuối về trước 7 ký tự. Độ dài 7. Tức là 7 ký tự cuối.- Tương đương:
RIGHT(Strength, 7)(ngắn gọn hơn).
⚠️ Cảnh báo
- UPDATE thay đổi dữ liệu vĩnh viễn! Không thể hoàn tác dễ dàng.
- Chuỗi ngắn hơn 7 ký tự: Trả về toàn bộ chuỗi.
- NULL: Kết quả NULL.
- Chữ Unicode: MySQL 8.0+ tính đúng ký tự. Version cũ có thể tính theo byte.
An toàn hơn: Thêm cột mới hoặc SELECT computed
-- Thêm cột mới ALTER TABLE DemoTable ADD StrengthShort VARCHAR(7); UPDATE DemoTable SET StrengthShort = RIGHT(Strength, 7); -- Hoặc View CREATE VIEW v_demo AS SELECT Strength, RIGHT(Strength, 7) AS ShortStrength FROM DemoTable;