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

Lọc cột theo ký tự đầu tiên trong MySQL với LEFT()

Hàm LEFT(str, n) trong MySQL trả về n ký tự đầu tiên của chuỗi str. Kết hợp với mệnh đề WHERE cho phép lọc các hàng có giá trị cột bắt đầu bằng ký tự (hoặc chuỗi) cụ thể.

Ví dụ minh họa

Tạo bảng nhân viên:

mysql> CREATE TABLE DemoTable1428 (
    EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    EmployeeName VARCHAR(20)
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1428 (EmployeeName) VALUES ('Chris Brown');
mysql> INSERT INTO DemoTable1428 (EmployeeName) VALUES ('Bob Brown');
mysql> INSERT INTO DemoTable1428 (EmployeeName) VALUES ('John Smith');
mysql> INSERT INTO DemoTable1428 (EmployeeName) VALUES ('David Miller');
mysql> INSERT INTO DemoTable1428 (EmployeeName) VALUES ('John Doe');
mysql> INSERT INTO DemoTable1428 (EmployeeName) VALUES ('Carol Johnson');

Dữ liệu:

mysql> SELECT * FROM DemoTable1428;
+------------+---------------+
| EmployeeId | EmployeeName  |
+------------+---------------+
|          1 | Chris Brown   |
|          2 | Bob Brown     |
|          3 | John Smith    |
|          4 | David Miller  |
|          5 | John Doe      |
|          6 | Carol Johnson |
+------------+---------------+

Lọc tên bắt đầu bằng chữ 'J'

mysql> SELECT * FROM DemoTable1428 
    WHERE LEFT(EmployeeName, 1) = 'J';

Kết quả:

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|          3 | John Smith   |
|          5 | John Doe     |
+------------+--------------+

Các cách lọc tiền tố khác

Cú phápMô tảHiệu năng
LEFT(col, 1) = 'J'Hàm LEFT, dễ hiểuKhông dùng index
SUBSTRING(col, 1, 1) = 'J'Hàm SUBSTRINGKhông dùng index
col LIKE 'J%'Toán tử LIKE (chuẩn SQL)Có thể dùng index
col RLIKE '^J'Regular expressionKhông dùng index

Khuyên dùng: WHERE col LIKE 'J%' — cú pháp chuẩn, tối ưu nhất, có thể tận dụng index trên cột.

Mở rộng: Lọc theo nhiều ký tự đầu

-- Tên bắt đầu bằng J, C, hoặc D
WHERE LEFT(EmployeeName, 1) IN ('J', 'C', 'D')

-- Hoặc dùng LIKE với OR
WHERE EmployeeName LIKE 'J%' OR EmployeeName LIKE 'C%' OR EmployeeName LIKE 'D%'