Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xóa tất cả chỉ giữ 7 ký tự cuối trong cột MySQL với SUBSTR


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;