Я нашел сообщение, в котором есть столбец с тремя значениями, разделенными запятыми. У меня будет более трех значений, разделенных запятыми. Например,
ID CITY_ID -------------- 1 12,18,16,17,35 2 12,16 .... --------------
Можно ли разбить строку city_id и сделать ее в строки с помощью запроса mysql, как показано ниже
ID CITY_ID ------------- 1 12 1 18 1 16 .... 2 16 .... --------------
Если да, пожалуйста, дайте совет.
Попробуй это
SELECT ID,SUBSTRING_INDEX(SUBSTRING_INDEX(t.CITY_ID, ',', nn), ',', -1) value FROM Table1 t CROSS JOIN ( SELECT aN + bN * 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 nn <= 1 + (LENGTH(t.CITY_ID) - LENGTH(REPLACE(t.CITY_ID, ',', ''))) ORDER BY ID,value
FIDDLE DEMO
Вывод:
ID VALUE 1 12 1 16 1 17 1 18 1 35 2 12 2 16