Giới thiệu
Sử dụng SUBSTR(str, pos, len) để cắt chuỗi con, kết hợp UNION ALL gộp nhiều truy vấn cắt độ dài khác nhau thành một tập kết quả duy nhất.
Ví dụ thực hành
1. Tạo bảng DemoTable856
mysql> CREATE TABLE DemoTable856 (Title TEXT);
2. Chèn tiêu đề
mysql> INSERT INTO DemoTable856 VALUES
('Introduction to MySQL'),('Java in depth'),('C++ with Data Structure');
3. Cắt 12 ký tự đầu VÀ 4 ký tự đầu, gộp bằng UNION ALL
mysql> SELECT SUBSTR(Title, 1, 12) FROM DemoTable856
UNION ALL
SELECT SUBSTR(Title, 1, 4) FROM DemoTable856;
4. Kết quả (6 hàng)
+--------------------+
| SUBSTR(Title,1,12) |
+--------------------+
| Introduction |
| Java in dept |
| C++ with Dat |
| Intr |
| Java |
| C++ |
+--------------------+
UNION vs UNION ALL
| Toán tử | Trùng lặp | Hiệu suất |
|---|---|---|
UNION | Loại bỏ trùng (DISTINCT) | Chậm hơn (cần sort/hash) |
UNION ALL | Giữ tất cả | Nhanh hơn (chỉ nối) |
Dùng UNION ALL khi chắc chắn không trùng hoặc chấp nhận trùng.
Mở rộng: Gán nhãn nguồn
SELECT 'first_12' AS src, SUBSTR(Title, 1, 12) AS val FROM DemoTable856
UNION ALL
SELECT 'first_4' AS src, SUBSTR(Title, 1, 4) AS val FROM DemoTable856;
Lưu ý
- Số cột và kiểu dữ liệu của các SELECT trong UNION phải tương thích.
SUBSTR(str, pos, len):postính từ 1.posâm = tính từ cuối.- MySQL cho phép
SUBSTRING(chuẩn SQL) vàSUBSTR(alias).