ฟังก์ชัน LEFT() ใน MySQL ใช้ดึงตัวอักษรจากด้านซ้ายของสตริงตามจำนวนที่กำหนด สามารถนำมาใช้ในเงื่อนไข WHERE เพื่อกรองข้อมูลที่ขึ้นต้นด้วยตัวอักษรเฉพาะได้อย่างง่ายดาย
ไวยากรณ์
LEFT(str, len)
- str: สตริงต้นฉบับ (ชื่อคอลัมน์)
- len: จำนวนตัวอักษรที่ต้องการดึงจากซ้าย
ตัวอย่างการใช้งาน
สร้างตารางพนักงาน:
mysql> CREATE TABLE DemoTable1428 (
-> EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName VARCHAR(20)
-> );
เพิ่มข้อมูล:
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');
ดูข้อมูลทั้งหมด:
mysql> SELECT * FROM DemoTable1428; +------------+---------------+ | EmployeeId | EmployeeName | +------------+---------------+ | 1 | Chris Brown | | 2 | Bob Brown | | 3 | John Smith | | 4 | David Miller | | 5 | John Doe | | 6 | Carol Johnson | +------------+---------------+
กรองเฉพาะชื่อที่ขึ้นต้นด้วย 'J':
mysql> SELECT * FROM DemoTable1428 WHERE LEFT(EmployeeName, 1) = 'J';
ผลลัพธ์:
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 3 | John Smith | | 5 | John Doe | +------------+--------------+
วิธีทางเลือกอื่นๆ
| วิธี | ตัวอย่าง | คำอธิบาย |
|---|---|---|
| SUBSTRING | SUBSTRING(EmployeeName, 1, 1) = 'J' | ดึงส่วนย่อย ตำแหน่งเริ่มต้น 1 ความยาว 1 |
| LIKE | EmployeeName LIKE 'J%' | ใช้ Wildcard % แทนตัวอักษรต่อไปทุกตัว (มาตรฐาน SQL) |
| REGEXP | EmployeeName REGEXP '^J' | Regular Expression ^ = เริ่มต้นสตริง |
ประสิทธิภาพและ Index
- LIKE 'J%' สามารถใช้ Index ได้ (Prefix Index)
- LEFT(), SUBSTRING(), REGEXP โดยทั่วไป ไม่สามารถใช้ Index ได้ (Non-SARGable)
- สำหรับตารางใหญ่ ควรใช้ LIKE 'J%' หรือสร้าง Generated Column + Index
การประยุกต์ใช้
- ค้นหาชื่อขึ้นต้นตัวอักษร A-Z (สำหรับรายชื่อโทรศัพท์)
- กรองรหัสสินค้าที่ขึ้นต้นด้วยรหัสประเภท
- จัดกลุ่มข้อมูลตามตัวอักษรแรกสำหรับรายงาน