Я новичок в PostgreSQl и не могу найти решение, чтобы получить результат, упомянутый ниже.
Я создал таблицу со столбцом типа данных text [], который представляет собой массив текстовых строк (один элемент).
Моя таблица выглядит следующим образом:
col1 col2
ID1 {"P25963(MI:0326), Homo sapiens);O14920(MI:0326), Homo sapiens)"}
ID2 {"Q8NFZ0(MI:0326), Homo sapiens);P12931(MI:0326), Homo sapiens)"}
ID3 {"P26368(MI:0326), Homo sapiens);Q15637(MI:0326), Homo sapiens); Q15638(MI:0326), Homo sapiens)"}
Когда я пытаюсь получить доступ к первому и второму элементу col2, я получаю вывод ниже.
SELECT col2[1] FROM table;
P25963(MI:0326), Homo sapiens);O14920(MI:0326), Homo sapiens
Q8NFZ0(MI:0326), Homo sapiens);P12931(MI:0326), Homo sapiens
P26368(MI:0326), Homo sapiens);Q15637(MI:0326), Homo sapiens); Q15638(MI:0326), Homo sapiens
SELECT col2[2] FROM table;
NULL
NULL
NULL
Я хотел бы разделить этот элемент массива на несколько элементов (наличие;) , развернуть их, а затем выполнить некоторое регулярное выражение для необъявленных строк.
Желаемый вывод после разбиения:
col1 col2
ID1 {P25963(MI:0326), Homo sapiens},{O14920(MI:0326), Homo sapiens}
ID2 {Q8NFZ0(MI:0326), Homo sapiens},{P12931(MI:0326), Homo sapiens}
ID3 {P26368(MI:0326), Homo sapiens},{Q15637(MI:0326), Homo sapiens}, {Q15638(MI:0326), Homo sapiens}
Желаемый результат после удаления:
col1 col3 col4
ID1 P25963(MI:0326), Homo sapiens O14920(MI:0326), Homo sapiens
ID2 Q8NFZ0(MI:0326), Homo sapiens P12931(MI:0326), Homo sapiens
ID3 P26368(MI:0326), Homo sapiens Q15637(MI:0326), Homo sapiens
ID3 P26368(MI:0326), Homo sapiens Q15638(MI:0326), Homo sapiens
Любое предложение будет очень полезным.
Спасибо