การแยกข้อมูลในคอลัมน์เดียวเป็นหลายคอลัมน์ด้วย SUBSTRING_INDEX
รูปแบบข้อมูล: ID-Name-Age ใช้ SUBSTRING_INDEX() ซ้อนกันเพื่อดึงส่วนที่ต้องการ
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable1962 (EmployeeInformation TEXT);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1962 VALUES('101-John-29');
mysql> INSERT INTO DemoTable1962 VALUES('102-David-35');
mysql> INSERT INTO DemoTable1962 VALUES('103-Chris-28');
คำสั่ง SQL แยกเป็น 3 คอลัมน์
mysql> SELECT
-> SUBSTRING_INDEX(EmployeeInformation, '-', 1) AS EmployeeId,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(EmployeeInformation, '-', 2), '-', -1) AS EmployeeName,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(EmployeeInformation, '-', -2), '-', -1) AS EmployeeAge
-> FROM DemoTable1962;
ผลลัพธ์:
+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 101 | John | 29 |
| 102 | David | 35 |
| 103 | Chris | 28 |
+------------+--------------+-------------+
คำอธิบาย: SUBSTRING_INDEX(str, '-', 1) ส่วนแรก, ตัวกลางใช้ SUBSTRING_INDEX(..., 2) แล้ว取หลังสุด -1, ส่วนท้ายใช้ -2 แล้ว取หลังสุด -1 ใน MySQL 8+ ใช้ JSON_TABLE หรือ REGEXP_SUBSTR ได้สะดวกกว่า