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

ลบข้อความหลังช่องว่าง (Space) ในคอลัมน์ MySQL ด้วย SUBSTRING_INDEX

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