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

Dùng LIKE trong MySQL tìm nhiều giá trị bắt đầu bằng 'Joh'

Tìm kiếm tiền tố (prefix) với LIKE và UNION

Kết hợp UNION (loại trùng) với subquery và LIKE 'Joh%' để tìm tất cả giá trị bắt đầu bằng 'Joh' từ cột Name.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (Name VARCHAR(40));
mysql> INSERT INTO DemoTable VALUES
    ('John'), ('Sam'), ('Mike'), ('Ethan'), ('Johnson'), ('Bob');

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+---------+
| Name    |
+---------+
| John    |
| Sam     |
| Mike    |
| Ethan   |
| Johnson |
| Bob     |
+---------+

3. Truy vấn: Tìm giá trị bắt đầu bằng 'Joh' (dùng UNION)

mysql> SELECT * FROM (
    SELECT Name AS myValue FROM DemoTable
    UNION
    SELECT Name FROM DemoTable
) tbl WHERE myValue LIKE 'Joh%';

4. Kết quả

+---------+
| myValue |
+---------+
| John    |
| Johnson |
+---------+

Phân tích truy vấn gốc (hơi dư thừa):

  • UNION 2 lần SELECT Name FROM DemoTable → loại trùng lặp (giống DISTINCT)
  • Sau đó lọc LIKE 'Joh%'
  • Kết quả: John, Johnson

Cách đơn giản hơn (khuyến nghị):

SELECT Name FROM DemoTable WHERE Name LIKE 'Joh%';

Cho kết quả giống hệt nhưng gọn nhẹ, hiệu quả hơn.

Khi nào cần UNION: Khi tìm từ nhiều cột khác nhau hoặc nhiều bảng: