Как лучше всего написать SQL для проблемы, указанной ниже

У меня есть таблица x со столбцом с именем Sprint, который выглядит так, как показано ниже (обратите внимание, что я просто показываю одну строку из этой таблицы в качестве примера):

Спринт
["com.atlassian.greenhopper.service.sprint.Sprint@55efff25[id=4659,rapidViewId=422,state=CLOSED,name=Sprint 108,startDate=2020-12-22T21:48:00.000-06:00,endDate =2021-01-04T21:48:00.000-06:00,completeDate=2021-01-05T01:28:18.156-06:00,activatedDate=2020-12-23T03:01:14.201-06:00,sequence=4658 ,цель=,autoStartStop=false]"]

Мне нужна помощь в написании SQL для извлечения name, startDate и endDate в виде отдельных столбцов в представлении, где вывод будет выглядеть так, как указано ниже;

ИмяДата началаДата окончания
Спринт 1082020-12-22T21:48:00.000-06:002021-01-04T21:48:00.000-06:00

Это все одно поле? Можете ли вы изменить структуру данных, прежде чем зайти слишком далеко?

Kendle 16.03.2022 18:28
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
44
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

вы можете попробовать использовать REGEXP_INSTR, как показано ниже, для столбца имени.

select column1,
REGEXP_INSTR(column1, 'name=') name_start,
REGEXP_INSTR(column1, ',',REGEXP_INSTR(column1, 'name=') ) name_end,
substr(column1,name_start,name_end-name_start)
from values
('com.atlassian.greenhopper.service.sprint.Sprint@55efff25[id=4659,rapidViewId=422,state=CLOSED,name=Sprint 108,startDate=2020-12-22T21:48:00.000-06:00,endDate=2021-01-04T21:48:00.000-06:00,completeDate=2021-01-05T01:28:18.156-06:00,activatedDate=2020-12-23T03:01:14.201-06:00,sequence=4658,goal=,autoStartStop=false]');
SELECT 
  SPLIT_PART(SPRINT, ',', 4) as Name,
  SPLIT_PART(SPRINT, ',', 5) as StartDate,
  SPLIT_PART(SPRINT, ',', 6) as EndDate,
FROM x;

Я попробовал это, и это сработало. Просто нужно очистить столбец и изменить тип данных.

Ответ принят как подходящий
SELECT 
 SPLIT_PART(SPLIT_PART(SPRINT, ',', 4),'=',2) as Name,
 SPLIT_PART(SPLIT_PART(SPRINT, ',', 5),'=',2) as StartDate,
 SPLIT_PART(SPLIT_PART(SPRINT, ',', 6),'=',2) as EndDate
FROM x;

Это одно из решений вышеупомянутой проблемы, которое дает результат;

ИмяДата началаДата окончания
Спринт 1082020-12-22T21:48:00.000-06:002021-01-04T21:48:00.000-06:00

Другие вопросы по теме