Обновил данные столбца varchar до данных jsonb

#postgresql

#postgresql

Вопрос:

Я пытаюсь обновить столбец из столбца типа varchar в JSON, но столбец уже заполнен переменными, как я могу преобразовать их в JSON с дополнительной информацией.

Структура таблицы с данными:

 ----- -------- 
| id  | value  |
 ----- -------- 
| 1   | value1 |
| 2   | value2 |
| 3   | value3 |
| 4   | value4 |
| 5   | value5 |
| 6   | value6 |
 ----- --------*
 

Ожидаемый результат:

  ----- ---------------------------------- 
| id  |             value                |
 ----- ---------------------------------- 
| 1   | {"t1": "val", "value": "value1"} |
| 2   | {"t1": "val", "value": "value2"} |
| 3   | {"t1": "val", "value": "value3"} |
| 4   | {"t1": "val", "value": "value4"} |
| 5   | {"t1": "val", "value": "value5"} |
| 6   | {"t1": "val", "value": "value5"} |
 ----- ----------------------------------*
 

Пожалуйста, помогите мне разрешить этот запрос

Ответ №1:

демонстрация: db<>скрипка

При изменении типа столбца вы можете добавить выражение для преобразования данных из старого типа в новый. Для этого необходимо добавить USING предложение:

 ALTER TABLE mytable
ALTER COLUMN "value" TYPE json USING json_build_object('t1', 'val', 'value', "value");
 

В этом случае используйте json_build_object() функцию для создания ожидаемого объекта JSON, включая. старое значение