Skip to content
Advertisement

Split comma separated string into rows in mysql

When I have string list like 1, 2, 3… I’d like to use this as one column

Ids
1
2
3

Is it possible by sql query?

ex) SELECT Ids from (1, 2, 3...) <- I know this is not working.

Advertisement

Answer

Use a subquery of arbitrary digits to split your string.Instead of vals you can use ‘1,2,3’.

SELECT
  DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(vals, ',', n.digit+1), ',', -1) val
FROM
  tt1
  INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3  UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) n
  ON LENGTH(REPLACE(vals, ',' , '')) <= LENGTH(vals)-n.digit;

See it working

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement