Sqlite3 Разделение столбца строки, возвращенного из запроса выбора, на несколько столбцов с разделителем - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть запрос к базе данных READ ONLY, который в настоящее время возвращает мне такой результат.Это не таблица.

ID|METRIC


1|"123,456,789"
2|"546,123,789"

Есть ли способ, который я могу рекурсивно выбрать из этого запроса так, чтобы результат выглядел следующим образом - по существу, разбивая строку между разделителями запятых на их собственные столбцы.В идеале что-то вроде Select --- некоторые вещи здесь --- from (--original query -);

 1|"123|456|789"
 2|"546|123|789"

Другие ответы, которые я видел, создают представления или таблицы, на которые у меня не будет разрешенияделать.База данных заблокирована только для энергонезависимых операторов выбора.

1 Ответ

0 голосов
/ 04 февраля 2019

Это не так читабельно, но работает:

select id,
  substr(metric, 1, instr(metric, ',') - 1) col1,
  substr(substr(metric, length(substr(metric, 1, instr(metric, ',') - 1)) + 2), 1, instr(substr(metric, length(substr(metric, 1, instr(metric, ',') - 1)) + 2), ',') - 1) col2,
  substr(substr(metric, length(substr(metric, 1, instr(metric, ',') - 1)) + 2), instr(substr(metric, length(substr(metric, 1, instr(metric, ',') - 1)) + 2), ',') + 1) col2
from tablename 

С CTE:

with qry as (
  select 
    id, 
    substr(metric, 1, instr(metric, ',') - 1) col1, 
    substr(metric, instr(metric, ',') + 1) right1 from tablename
)

select 
  id, 
  col1, 
  substr(right1, 1, instr(right1, ',') - 1) col2, 
  substr(right1, instr(right1, ',') + 1) col3
from qry q

См. Демоверсию

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