更新以删除编号jsonb postgresql中的双引号

问题描述 投票:1回答:1

我正在使用PostgreSQL,我正在尝试为jsonb运行更新。

我想将“ 2W”更改为仅2。

因此下面的查询删除了W,但将其保留为“ 2”。

我将如何删除双引号?

目前看起来像{“ size”:“ 2W”},我希望它看起来像{“ size”:2}]

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


sql json postgresql select jsonb
1个回答
0
投票

您可以为此使用to_jsonb()

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

Demo on 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} |
© www.soinside.com 2019 - 2024. All rights reserved.