Cú pháp
Sử dụng hàm LEFT() để cắt lấy N ký tự đầu tiên:
SELECT LEFT(ten_cot, 40) AS ten_alias FROM ten_bang;
Ví dụ minh họa
1. Tạo bảng
mysql> CREATE TABLE retrieveFirst40Characters ( -> AllWords TEXT -> ); Query OK, 0 rows affected (0.59 sec)
2. Chèn văn bản dài
mysql> INSERT INTO retrieveFirst40Characters
VALUES('This is a query demo to extract a forty characters from a text field, you can use left function to get forty characters');
Query OK, 1 row affected (0.32 sec)
3. Dữ liệu gốc
mysql> SELECT * FROM retrieveFirst40Characters;
+------------------------------------------------------------------------------------------------------------------------+ | AllWords | +------------------------------------------------------------------------------------------------------------------------+ | This is a demo text displayed in a table for our example | +------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
4. Lấy 40 ký tự đầu
mysql> SELECT LEFT(AllWords, 40) AS Retrieve40Characters FROM retrieveFirst40Characters;
+------------------------------------------+ | Retrieve40Characters | +------------------------------------------+ | This is a demo text displayed in a table | +------------------------------------------+ 1 row in set (0.03 sec)
Các hàm cắt chuỗi liên quan
| Hàm | Mô tả | Ví dụ |
|---|---|---|
| LEFT(str, n) | N ký tự đầu | LEFT('Hello World', 5) → 'Hello' |
| RIGHT(str, n) | N ký tự cuối | RIGHT('Hello World', 5) → 'World' |
| SUBSTRING(str, start, len) | Con chuỗi từ vị trí start, dài len | SUBSTRING('Hello World', 7, 5) → 'World' |
| SUBSTRING_INDEX(str, delim, count) | Cắt theo dấu phân cách | SUBSTRING_INDEX('a.b.c', '.', 2) → 'a.b' |
Ứng dụng thực tế
Tạo mô tả ngắn (excerpt) cho bài viết
SELECT
id,
title,
LEFT(content, 150) AS excerpt,
CASE WHEN CHAR_LENGTH(content) > 150 THEN '...' ELSE '' END AS more_indicator
FROM articles;
Hiển thị preview email
SELECT
subject,
LEFT(body, 100) AS preview
FROM emails
WHERE user_id = 123;
Lưu ý hiệu năng
LEFT()hoạt động tốt trên cột TEXT- Không cần index cho cột TEXT khi dùng LEFT()
- Tránh dùng trong WHERE clause trên cột TEXT lớn
- Cân nhắc lưu cột preview riêng nếu truy vấn thường xuyên