Разбить столбец на разные строки в SQLite рекурсивно, используя разделитель "," - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть таблица SQLite, такая как:

table_name: surat

имя таблицы 'surat'

Но я хочу сделать разделение id_ayat на разные строки с помощью SQLite-запроса, и ожидаемый результат будет таким:

  _id|id_surat|id_ayat
  ---+--------+-------
  3  |   2    |  112
  3  |   2    |  213
  3  |   3    |  19
  3  |   3    |  83
  3  |   3    |  85
  3  |   3    |  102

возможно ли это? какой запрос я могу использовать в формате SQLite?

1 Ответ

2 голосов
/ 17 апреля 2020

С рекурсивом CTE:

with recursive cte as (
  select _id, id_surat, id_ayat, 
    id_ayat + 0 col 
  from tablename 
  union all 
  select _id, id_surat, trim(substr(id_ayat, length(col) + 2)), 
    trim(substr(id_ayat, length(col) + 2)) + 0 
  from cte  
  where instr(id_ayat, ',')
)
select _id, id_surat, col id_ayat 
from cte
order by _id, id_surat

См. Демоверсию . Результаты:

| _id | id_surat | id_ayat |
| --- | -------- | ------- |
| 3   | 2        | 112     |
| 3   | 2        | 213     |
| 3   | 3        | 19      |
| 3   | 3        | 83      |
| 3   | 3        | 85      |
| 3   | 3        | 102     |
...