Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การกรองข้อมูลใน MySQL ด้วยตัวอักษรแรกของคอลัมน์โดยใช้ LEFT

ฟังก์ชัน 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     |
+------------+--------------+

วิธีทางเลือกอื่นๆ

วิธีตัวอย่างคำอธิบาย
SUBSTRINGSUBSTRING(EmployeeName, 1, 1) = 'J'ดึงส่วนย่อย ตำแหน่งเริ่มต้น 1 ความยาว 1
LIKEEmployeeName LIKE 'J%'ใช้ Wildcard % แทนตัวอักษรต่อไปทุกตัว (มาตรฐาน SQL)
REGEXPEmployeeName REGEXP '^J'Regular Expression ^ = เริ่มต้นสตริง

ประสิทธิภาพและ Index

  • LIKE 'J%' สามารถใช้ Index ได้ (Prefix Index)
  • LEFT(), SUBSTRING(), REGEXP โดยทั่วไป ไม่สามารถใช้ Index ได้ (Non-SARGable)
  • สำหรับตารางใหญ่ ควรใช้ LIKE 'J%' หรือสร้าง Generated Column + Index

การประยุกต์ใช้

  • ค้นหาชื่อขึ้นต้นตัวอักษร A-Z (สำหรับรายชื่อโทรศัพท์)
  • กรองรหัสสินค้าที่ขึ้นต้นด้วยรหัสประเภท
  • จัดกลุ่มข้อมูลตามตัวอักษรแรกสำหรับรายงาน