Kết hợp SUBSTRING_INDEX() để tách phần trước/sau dấu -, sau đó dùng MIN(), MAX() trên kết quả (MySQL tự chuyển chuỗi sang số khi so sánh).
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value VARCHAR(100)
);
Chèn dữ liệu:
mysql> INSERT INTO DemoTable(Value) VALUES('10-20');
mysql> INSERT INTO DemoTable(Value) VALUES('200-100');
mysql> INSERT INTO DemoTable(Value) VALUES('780-235');
Xem dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả
+----+---------+ | Id | Value | +----+---------+ | 1 | 10-20 | | 2 | 200-100 | | 3 | 780-235 | +----+---------+
Tìm MIN của phần trước dấu - và MAX của phần sau dấu -:
mysql> SELECT
-> MIN(SUBSTRING_INDEX(Value, '-', 1)),
-> MAX(SUBSTRING_INDEX(Value, '-', -1))
-> FROM DemoTable;
Kết quả
+-------------------------------------+--------------------------------------+ | MIN(SUBSTRING_INDEX(Value, '-', 1)) | MAX(SUBSTRING_INDEX(Value, '-', -1)) | +-------------------------------------+--------------------------------------+ | 10 | 235 | +-------------------------------------+--------------------------------------+
Giải thích: SUBSTRING_INDEX(Value, '-', 1) lấy phần trước dấu - đầu tiên; SUBSTRING_INDEX(Value, '-', -1) lấy phần sau dấu - cuối cùng. MySQL so sánh chuỗi theo giá trị số khi dùng MIN/MAX trên chuỗi chỉ chứa chữ số.