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

Trích xuất substring độ dài khác nhau và gộp kết quả với UNION ALL trong MySQL

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ặpHiệu suất
UNIONLoại bỏ trùng (DISTINCT)Chậm hơn (cần sort/hash)
UNION ALLGiữ 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): pos tính từ 1. pos âm = tính từ cuối.
  • MySQL cho phép SUBSTRING (chuẩn SQL) và SUBSTR (alias).