Câu trả lời này đã lỗi thời. MySql có hỗ trợ regex tốt hơn.
Không, thật buồn khi nói rằng MySQL không có cách nào để áp dụng regex cho nội dung của cột trong mệnh đề SELECT, chỉ có mệnh đề WHERE.
Nhưng bạn có thể sử dụng các hàm thao tác chuỗi thông thường (không phải regex) để thực hiện việc này. Nếu cột chứa ký hiệu và chuỗi tham số được phân tách bằng dấu và được đặt tên là url
, bạn có thể nhận được số id với biểu thức chuỗi nhỏ này, sẽ tìm thấy số id của bạn.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Vì vậy, nếu bạn muốn một danh sách id
giá trị từ url
các cột của table1
, bạn có thể sử dụng SELECT
này truy vấn.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Như bạn có thể thấy, điều này sử dụng chức năng tìm kiếm regexp để xác định vị trí các hàng thích hợp.
Không có gì nhanh về điều này. Đối sánh Regexp không thể khai thác chỉ mục MySQL. Nếu bạn có lựa chọn tải bảng của mình với cột id được trích xuất trước, bạn sẽ tốt hơn nhiều khi tìm kiếm khi bảng của bạn lớn hơn.