SQL แยก string ออกจากกัน และตั้งเป็น column ใหม่ บทความนี้สอนใช้คำสั่ง SUBSTRING_INDEX ของ SQL เพื่อแยก string ด้วยค่าที่ต้องการ และตั้งเป็น column ใหม่ด้วยคำสั่ง AS สามารถเขียนคำสั่งได้ดังนี้
ตัวอย่าง ข้อมูลในตาราง test
+----+-------------+
| id | name |
+----+-------------+
| 1 | Somchai ABC |
| 2 | Somying DEF |
+----+-------------+
ตัวอย่าง SQL แยก string ออกจากกัน และตั้งเป็น column ใหม่
SELECT SUBSTRING_INDEX(name,' ', 1) AS first_name, SUBSTRING_INDEX(name,' ', -1) AS last_name FROM test;
ผลลัพธ์
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Somchai | ABC |
| Somying | DEF |
+------------+-----------+
2 rows in set (0.001 sec)
SQL แยก string ออกจากกัน ตัวอย่างต้องการแยก string ด้วยค่าว่าง ให้เป็น Somchai ตั้งชื่อว่า first_name และ ABC เป็น last_name สามารถอธิบายคำสั่ง SQL ได้ดังนี้
1. SELECT SUBSTRING_INDEX(name,' ', 1) AS first_name คือ แยก string ของ column name ด้วยค่าว่างเปล่า เลข 1 เป็นจำนวนเต็มบวกจึงอ้างถึงข้อมูลก่อนช่องว่าง (ข้อมูลทางซ้าย) พร้อมตั้งชื่อว่า first_name
2. SUBSTRING_INDEX(name,' ', -1) AS last_name คือ รายละเอียดเหมือนข้อ 1 แต่เป็นตัวเลขติดลบจึงอ้างถึงข้อมูลทางฝั่งขวา หรือข้อมูลหลังช่องว่าง และตั้งชื่อ column ว่า last_name
3. FROM test คือ ดึงข้อมูลจากตาราง test