Sử dụng hàm SUBSTR() để trích xuất phần giữa của giá trị cột được bao quanh bởi dấu gạch ngang, ví dụ: "11-84848-11".
Tạo bảng demo
mysql> create table DemoTable (
-> Number varchar(100),
-> Number1 varchar(100)
-> );
Query OK, 0 rows affected (0.56 sec)
Chèn dữ liệu mẫu
mysql> insert into DemoTable(Number) values('11-84848-11');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Number) values('22-99999-22');
Query OK, 1 row affected (0.13 sec)
Hiển thị dữ liệu ban đầu
mysql> select * from DemoTable;
Kết quả
+-------------+---------+ | Number | Number1 | +-------------+---------+ | 11-84848-11 | NULL | | 22-99999-22 | NULL | +-------------+---------+ 2 rows in set (0.00 sec)
Trích xuất phần giữa (5 ký tự từ vị trí 4)
mysql> update DemoTable
-> set Number1 = SUBSTR(Number, 4, 5);
Query OK, 2 rows affected (0.19 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Kiểm tra kết quả
mysql> select * from DemoTable;
Kết quả - Phần giữa đã được trích xuất
+-------------+---------+ | Number | Number1 | +-------------+---------+ | 11-84848-11 | 84848 | | 22-99999-22 | 99999 | +-------------+---------+ 2 rows in set (0.00 sec)
Giải thích: SUBSTR(chuoi, vi_tri_bat_dau, do_dai) - Với định dạng "XX-XXXXX-XX", phần giữa bắt đầu tại vị trí 4 (sau 2 ký tự và 1 dấu gạch ngang) và dài 5 ký tự.
Cách linh hoạt hơn: Sử dụng SUBSTRING_INDEX() để không phụ thuộc vào độ dài cố định:
SUBSTRING_INDEX(SUBSTRING_INDEX(Number, '-', 2), '-', -1)