Обновление для удаления двойных кавычек из числа jsonb postgresql - PullRequest
1 голос
/ 14 апреля 2020

Я использую PostgreSQL и пытаюсь запустить обновление для jsonb.

Я хочу, чтобы значение "2W" изменилось только на число 2.

Таким образом, приведенный ниже запрос удаляет W, но оставляет его как "2".

Как бы я go удалил двойные кавычки?

в настоящее время это выглядит как {"size": "2W"} и я хотел бы, чтобы это выглядело как {"size": 2}

UPDATE x
SET x = jsonb_set(x, '{size}', ('"' || replace(x->>'size', 'W', '') || '"')::jsonb)
WHERE x IN ('')


1 Ответ

0 голосов
/ 14 апреля 2020

Для этого можно использовать to_jsonb():

jsonb_set(x, '{size}', to_jsonb(replace(x->>'size', 'W', '')::int))

Демонстрация на DB Fiddle :

select jsonb_set(x, '{size}', to_jsonb(replace(x->>'size', 'W', '')::int))
from (values('{"size": "2W"}'::jsonb)) as t(x)
| jsonb_set   |
| :---------- |
| {"size": 2} |

Вы можете заменить ::int на ::numeric для обработки десятичных значений при необходимости.

...