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

แยกสตริงคั่นด้วย hyphen (-) เป็นหลายคอลัมน์ใน MySQL

การแยกข้อมูลในคอลัมน์เดียวเป็นหลายคอลัมน์ด้วย 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 ได้สะดวกกว่า