sql >> Database >  >> RDS >> Mysql

Hoe een door komma's gescheiden reeks records te splitsen en vervolgens opeenvolgend in MySQL te rangschikken?

U kunt MySQL SUBSTRING_INDEX() gebruiken. Het retourneert de subtekenreeks van de gegeven door komma's gescheiden tekenreeks vóór een bepaald aantal keren dat het scheidingsteken voorkomt.

Probeer dit, het lijkt goed te werken:

SELECT ID
       ,SUBSTRING_INDEX(SUBSTRING_INDEX(t.AgentID, ',', n.n), ',', -1) Agent
       ,Name
       ,SUBSTRING_INDEX(SUBSTRING_INDEX(t.Return_Date, ',', n.n), ',', -1) Return_Date
FROM table1 t CROSS JOIN 
 (
   SELECT a.N + b.N * 10 + 1 n
   FROM 
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
    ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
   ORDER BY n
  ) n

WHERE n.n <= 1 + (LENGTH(t.Return_Date) - LENGTH(REPLACE(t.Return_Date, ',', '')))
ORDER BY ID;

Controleer dit..SQL Fiddle HIER

Ga voor verder onderzoek naar MySQL Split String Function



  1. Bulk DELETE op SQL Server 2008 (Is er zoiets als Bulk Copy (bcp) voor het verwijderen van gegevens?)

  2. Oracle.DataAccess niet beschikbaar voor selectie in Visual Studio 2013

  3. Geselecteerde kolommen hebben geen compatibel type, zelfs niet van hetzelfde type

  4. Meerdere databases in docker en docker-compose