मैं PostgreSQL का उपयोग कर रहा हूँ और मैं jsonb के लिए एक अद्यतन चलाने की कोशिश कर रहा हूँ।

मैं चाहता हूं कि "2W" सिर्फ नंबर 2 में बदल जाए।

तो नीचे दी गई क्वेरी W को हटा देती है, लेकिन इसे "2" के रूप में छोड़ देती है।

मैं दोहरे उद्धरण चिह्नों को हटाने के बारे में कैसे जाउंगा?

वर्तमान में यह {"आकार": "2W"} जैसा दिखता है और मैं चाहता हूं कि यह {"आकार": 2} जैसा दिखे

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


1
sahar 14 अप्रैल 2020, 21:02

1 उत्तर

सबसे बढ़िया उत्तर

आप इसके लिए 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 से बदल सकते हैं।

0
GMB 14 अप्रैल 2020, 21:37