Преобразовать строку через запятую в строки - PullRequest
0 голосов
/ 10 марта 2019

У меня есть строка, разделенная запятыми.

Теперь я хотел бы разделить это строковое значение на каждую строку.

Ввод:

1,2,3,4,5

Требуемый вывод:

   value
----------
     1
     2
     3
     4
     5

Как мне добиться этого в sql?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 10 марта 2019

Если вы используете Postgres, вы можете использовать string_to_array и unnest:

select *
from unnest(string_to_array('1,2,3,4,5',',') as t(value);
0 голосов
/ 11 марта 2019

В Postgres вы также можете использовать функцию 'regexp_split_to_table ()'.

Если вы используете MariaDB или MySQL, вы можете использовать рекурсивный CTE, например:

with recursive itemtable as (
        select
            trim(substring_index(data, ',', 1)) as value,
            right(data, length(data) - locate(',', data, 1)) as data
        from (select '1,2,3,4,5' as data) as input
        union
        select
            trim(substring_index(data, ',', 1)) as value,
            right(data, length(data) - locate(',', data, 1)) as data
        from itemtable
    )
0 голосов
/ 10 марта 2019

Используйте функцию STRING_SPLIT, если вы используете SQL Server

SELECT value
FROM STRING_SPLIT('1,2,3,4,5', ',')

В противном случае вы можете выполнить цикл с помощью функции SUBSTRING_INDEX() и вставить каждую строку во временную таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...