[英]How to convert Multiple row values to one row with comma-separated value different ID in Oracle
[英]How to store comma-separated values row by row in postgresql
輸入:
('{"user":{"status":1,"loginid":1,"userids":{"userid":"5,6"}}}')
我想像這樣插入到我的表中:
userid loginid status
---------------------------
5 1 1
6 1 1
使用regexp_split_to_table().
假設列是整數:
with input_data(data) as (
values
('{"user":{"status":1,"loginid":1,"userids":{"userid":"5,6"}}}'::json)
)
-- insert into my_table(userid, loginid, status)
select
regexp_split_to_table(data->'user'->'userids'->>'userid', ',')::int as userid,
(data->'user'->>'loginid')::int as loginid,
(data->'user'->>'status')::int as status
from input_data
userid | loginid | status
--------+---------+--------
5 | 1 | 1
6 | 1 | 1
(2 rows)
使用數組(JSON 數組)開始會更簡單。 您可以使用json_array_elements_text(json)
。 看:
使用string_to_array()
將您擁有的列表轉換為數組。 然后unnest()
。
SELECT unnest(string_to_array(js#>>'{user,userids,userid}', ',')) AS userid
, (js#>>'{user,loginid}')::int AS loginid
, (js#>>'{user,status}')::int AS status
FROM (
SELECT json '{"user":{"status":1,"loginid":1,"userids":{"userid":"5,6"}}}'
) i(js);
db<> 在這里擺弄
對於SELECT
列表中帶有unnest()
的簡單形式,我建議 Postgres 10 或更高版本。 看:
我避免在簡單任務中使用正則表達式函數。 這些功能強大,但要貴得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.