ใช้ฟังก์ชัน SUBSTRING_INDEX() เพื่อดึงส่วนก่อนช่องว่างแรก
ไวยากรณ์
SELECT SUBSTRING_INDEX(yourColumnName, ' ', 1) AS anyAliasName FROM yourTableName;
สร้างตารางตัวอย่าง
mysql> create table deleteAfterSpaceDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into deleteAfterSpaceDemo(StudentName) values('John Smith');
mysql> insert into deleteAfterSpaceDemo(StudentName) values('Adam Smith');
mysql> insert into deleteAfterSpaceDemo(StudentName) values('Carol Taylor');
mysql> insert into deleteAfterSpaceDemo(StudentName) values('Chris Brown');
mysql> insert into deleteAfterSpaceDemo(StudentName) values('David Miller');
แสดงข้อมูลก่อน
mysql> select * from deleteAfterSpaceDemo;
ผลลัพธ์:
+----+--------------+ | Id | StudentName | +----+--------------+ | 1 | John Smith | | 2 | Adam Smith | | 3 | Carol Taylor | | 4 | Chris Brown | | 5 | David Miller | +----+--------------+
Query ดึงเฉพาะชื่อแรก (ก่อน space)
mysql> SELECT SUBSTRING_INDEX(StudentName, ' ', 1) AS deleteAllAfterSpace FROM deleteAfterSpaceDemo;
ผลลัพธ์:
+---------------------+ | deleteAllAfterSpace | +---------------------+ | John | | Adam | | Carol | | Chris | | David | +---------------------+
อธิบายพารามิเตอร์ SUBSTRING_INDEX(str, delim, count)
str: สตริงต้นทางdelim: ตัวคั่น (delimiter) ที่นี่คือช่องว่าง' 'count: จำนวน delimiter ที่นับ- บวก: นับจากซ้ายไปขวา คืนค่าส่วนก่อน delimiter ตัวที่ count
- ลบ: นับจากขวาไปซ้าย คืนค่าส่วนหลัง delimiter ตัวที่ |count|
กรณีชื่อมีหลายคำ (First Middle Last)
ถ้าต้องการเฉพาะคำแรก ใช้ count = 1 ตามตัวอย่าง
ถ้าต้องการชื่อ-นามสกุล (2 คำแรก) ใช้ count = 2