下面是文本列中字串的值。
select col1 from tt_d_tab;
'A:10000000,B:50000000,C:1000000,D:10000000,E:10000000'
我正在嘗試將其轉換為以下格式的 json。
'{"A": 10000000,"B": 50000000,"C": 1000000,"D": 10000000,"E": 10000000}'
有人可以幫忙嗎?
uj5u.com熱心網友回復:
如果您的密鑰是您的示例中的單個大寫字母
select concat('{',regexp_replace('A:10000000,B:50000000,C:1000000,D:10000000,E:10000000','([A-Z])','"\1"','g'),'}')::json json_field;
一個更一般的情況,有任意數量的字母大寫與否
select concat('{',regexp_replace('Ac:10000000,BT:50000000,Cs:1000000,D:10000000,E:10000000','([a-zA-Z] )','"\1"','g'),'}')::json json_field;
uj5u.com熱心網友回復:
如果您知道鍵和值都不會包含:字符,,則可以撰寫
select json_object(regexp_split_to_array(col1,'[:,]')) from tt_d_tab;
這會在每個冒號和逗號上拆分字串,然后將結果解釋為鍵/值對。
如果字串操作變得更加復雜,SQL 可能不是該作業的理想工具,但它仍然是可行的,無論是通過這種方法還是通過將字串直接轉換為您需要的形式,然后將其轉換為 json 和::json.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504842.html
標籤:PostgreSQL
