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

Trích xuất phần giữa của giá trị cột được bao quanh bởi dấu gạch ngang trong MySQL

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)