日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Oracle 處理json數據的方法

瀏覽:387日期:2023-03-12 15:25:43
目錄
  • 備注:
  • 一. Json數據存儲
  • 二. Json數據insert
  • 三. json數據update
  • 四. json數據查詢
  • 五. 常用的json函數
    • 5.1 json_array
    • 5.2 JSON_ARRAYAGG
    • 5.3 JSON_DATAGUIDE
    • 5.4 JSON_MERGEPATCH
    • 5.5 JSON_OBJECT
    • 5.6 JSON_OBJECTAGG
    • 5.7 JSON_QUERY
    • 5.8 json_serialize
    • 5.9 JSON_TABLE
    • 5.10 JSON_TRANSFORM
    • 5.11 JSON_VALUE

備注:

Oracle 19C

一. Json數據存儲

看了下官網,Json數據一般使用varchar2(400),varchar2(32676)或者BLOB來存儲Json數據。
代碼:

create table test_json(id number,json_text varchar2(4000) CONSTRAINT ensure_json CHECK (json_text IS JSON));

二. Json數據insert

數據準備:

insert into test_jsonselect rownum as rn,       json_text from  (select json_object( "deptno" value d.deptno, "dname" value d.dname, "loc" value d.loc, "emps" value json_arrayagg (     json_object("empno" value e.empno,"ename" value e.ename,"job"   value e.job,"mgr"   value e.mgr,"hiredate" value e.hiredate,"sal" value e.sal,"comm" value e.comm     )     ))  as json_text  from dept d  left join emp e  on d.deptno = e.deptno  group by d.deptno,d.dname,d.loc  ) tmp  ;

*查看json數據:
deptno為40的沒有員工,也都進入了,這個看起來有點奇怪

我們看看deptno為10的json數據

三. json數據update

上一步 deptno為40的沒有員工,也都進入了,這個看起來有點奇怪 ,我需要emps后面的都去除掉。

代碼:

UPDATE TEST_JSON SET json_text =  json_mergepatch(json_text, "{"deptno":40,"dname":"OPERATIONS","loc":"BOSTON","emps" : null}") where id = 4   ;

測試記錄:

四. json數據查詢

上一個步驟中,我們插入的部門數據,每個部門都有0或多個員工,此時我們顯示部門名稱,以及部門下所有的員工。

代碼:

select t.id,       t.json_text.dname,       t.json_text.emps.ename from TEST_JSON t ;

測試記錄:
不得不說,Oracle的json功能真的太方便了

代碼2:

select t.id,       JSON_QUERY(t.json_text, "$.emps.ename" WITH WRAPPER) from TEST_JSON t ;

測試記錄2:

五. 常用的json函數

5.1 json_array

如果json中要存數組的話,可以使用json_array函數

SQL> select JSON_ARRAY(1,2,3) from dual;JSON_ARRAY(1,2,3)--------------------------------------------------------------------------------[1,2,3]

5.2 JSON_ARRAYAGG

將多列數據轉換為一個數組類型,例如第二步insert的時候就有使用JSON_ARRAYAGG函數。

代碼:

insert into test_jsonselect rownum as rn,       json_text from  (select json_object( "deptno" value d.deptno, "dname" value d.dname, "loc" value d.loc, "emps" value json_arrayagg (     json_object("empno" value e.empno,"ename" value e.ename,"job"   value e.job,"mgr"   value e.mgr,"hiredate" value e.hiredate,"sal" value e.sal,"comm" value e.comm     )     ))  as json_text  from dept d  left join emp e  on d.deptno = e.deptno  group by d.deptno,d.dname,d.loc  ) tmp  ;

官網測試demo:

CREATE TABLE id_table (id NUMBER);INSERT INTO id_table VALUES(624);INSERT INTO id_table VALUES(null);INSERT INTO id_table VALUES(925);INSERT INTO id_table VALUES(585);SELECT JSON_ARRAYAGG(id ORDER BY id RETURNING VARCHAR2(100)) ID_NUMBERS  FROM id_table;

官網測試demo:

SQL> CREATE TABLE id_table (id NUMBER);Table createdSQL> INSERT INTO id_table VALUES(624);1 row insertedSQL> INSERT INTO id_table VALUES(null);1 row insertedSQL> INSERT INTO id_table VALUES(925);1 row insertedSQL> INSERT INTO id_table VALUES(585);1 row insertedSQL> SQL> SELECT JSON_ARRAYAGG(id ORDER BY id RETURNING VARCHAR2(100)) ID_NUMBERS  2    FROM id_table;ID_NUMBERS--------------------------------------------------------------------------------[585,624,925]SQL> 

5.3 JSON_DATAGUIDE

聚合函數JSON_DATAGUIDE接受JSON數據的表列作為輸入,并將數據指南作為CLOB返回。列中的每一行都被稱為一個JSON文檔。對于列中的每個JSON文檔,該函數返回一個CLOB值,其中包含該JSON文檔的平面數據指南。

代碼:

select t.id,       --t.json_text,       JSON_DATAGUIDE(t.json_text) from TEST_JSON t group by t.id order by t.id ;

測試記錄:

5.4 JSON_MERGEPATCH

用于update json文檔數據
代碼:

UPDATE TEST_JSON SET json_text =  json_mergepatch(json_text, "{"deptno":40,"dname":"OPERATIONS","loc":"BOSTON","emps" : null}") where id = 4   ;

測試記錄:

5.5 JSON_OBJECT

SQL/JSON函數JSON_OBJECT接受一系列鍵-值對或一個對象類型實例作為輸入。集合類型不能傳遞給JSON_OBJECT。

代碼:

select empno,       JSON_OBJECT(key "empno" value empno,   key "ename" value ename,   key "job" value job) as emp_json  from emp;

測試記錄:

5.6 JSON_OBJECTAGG

SQL/JSON函數JSON_OBJECTAGG是一個聚合函數。它將屬性鍵-值對作為其輸入。通常,屬性鍵、屬性值或兩者都是SQL表達式的列。該函數為每個鍵-值對構造一個對象成員,并返回一個包含這些對象成員的JSON對象。

代碼:

select JSON_OBJECTAGG(key dname value deptno) as depts  from dept

測試記錄:

5.7 JSON_QUERY

JSON_QUERY從JSON數據中選擇并返回一個或多個值,然后返回這些值??梢允褂肑SON_QUERY檢索JSON文檔的片段。

代碼:

select t.id,       JSON_QUERY(t.json_text, "$.emps.ename" WITH WRAPPER) from TEST_JSON t ;

測試記錄:

5.8 json_serialize

json_serialize函數接受任何SQL數據類型(VARCHAR2、CLOB、BLOB)的JSON數據作為輸入,并返回其文本表示。通常使用它來轉換查詢的結果。

可以使用json_serialize將二進制JSON數據轉換為文本形式(VARCHAR2或CLOB),或者通過對文本JSON數據進行精細打印或對其中的非ascii Unicode字符進行轉義來轉換文本JSON數據。

測試記錄:

SQL> SELECT JSON_SERIALIZE ("{a:[1,2,3,4]}" RETURNING VARCHAR2(10) TRUNCATE ERROR ON ERROR) from dual;JSON_SERIALIZE("{A:[1,2,3,4]}"------------------------------{"a":[1,2,

5.9 JSON_TABLE

SQL/JSON函數JSON_TABLE創建JSON數據的關系視圖。它將JSON數據計算的結果映射到關系行和列中??梢允褂肧QL將函數返回的結果作為虛擬關系表進行查詢。JSON_TABLE的主要目的是為JSON數組中的每個對象創建一行關系數據,并將該對象中的JSON值作為單獨的SQL列值輸出。

代碼:

SELECT t.*FROM test_jsonNESTED json_text COLUMNS(dname, deptno) t;

測試記錄:

代碼2:

SELECT t.*FROM test_json LEFT OUTER JOINJSON_TABLE(json_text COLUMNS(dname, deptno)) t ON 1=1;

測試記錄2:

5.10 JSON_TRANSFORM

使用JSON_TRANSFORM修改JSON文檔輸入到函數中。通過指定一個或多個對JSON數據執行更改的修改操作,可以更改JSON文檔(或JSON文檔的部分)。修改后的JSON文檔作為輸出返回。

5.11 JSON_VALUE

SQL/JSON函數JSON_VALUE在JSON數據中查找指定的標量JSON值,并將其作為SQL值返回。

測試記錄:

SQL> SELECT JSON_VALUE("{a:100}", "$.a") AS value  2    FROM DUAL;VALUE--------------------------------------------------------------------------------100SQL> 

參考:

到此這篇關于Oracle 處理json數據的文章就介紹到這了,更多相關Oracle 處理json數據內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Oracle
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品网站999| 国产aⅴ精品一区二区四区| 国产中文在线播放| 国产精品亚洲人成在99www| 日韩精品免费视频人成| 久久99伊人| 99精品视频在线| 婷婷成人在线| 五月天久久777| 亚洲免费观看| 男人的天堂久久精品| 免费一级片91| 99国产一区| 亚洲欧美日韩国产综合精品二区 | 激情综合亚洲| 国产v综合v| 亚洲五月婷婷| 国产专区一区| 久久国产主播| 成人亚洲欧美| 国产高清精品二区| 精品成av人一区二区三区 | 91亚洲国产| av免费不卡国产观看| 欧美激情另类| 日韩精品水蜜桃| 日韩啪啪电影网| 久久久精品五月天| 99久久婷婷| 免费视频久久| 丝袜a∨在线一区二区三区不卡| 日韩在线播放一区二区| 亚洲一二av| 日本aⅴ免费视频一区二区三区| 国产日韩中文在线中文字幕| 国产欧美欧美| 欧美日韩国产v| 久久国产中文字幕| 999国产精品视频| 乱人伦精品视频在线观看| 亚洲一区二区小说| 国产剧情在线观看一区| 久久精品国产免费| 97se综合| 欧美在线影院| 日本一区中文字幕| 91精品一区| 精品一区二区三区中文字幕 | 一区免费在线| 精品久久网站| 午夜精品一区二区三区国产| 国产视频一区在线观看一区免费| 国产探花在线精品| 黄色在线网站噜噜噜| 午夜免费一区| 不卡专区在线| 国产亚洲精品v| 欧美私人啪啪vps| 精品国产aⅴ| 亚洲福利久久| 国产精品一区二区99| 国产精品久久久久av电视剧| 黄色在线观看www| 欧美专区18| 国产aⅴ精品一区二区四区| 亚洲网站视频| 清纯唯美亚洲综合一区| 久久久久中文| 日韩激情一区二区| 成人日韩精品| 亚洲精品麻豆| 成人欧美一区二区三区的电影| 2023国产精品久久久精品双| 亚洲欧洲国产精品一区| 日本韩国欧美超级黄在线观看| 蜜桃av一区| 天堂8中文在线最新版在线| 野花国产精品入口| 老司机免费视频一区二区| 尤物tv在线精品| 国产精品一区二区三区av麻| 久久福利毛片| 成人亚洲一区| 国产欧美一区二区色老头| 欧美午夜精品一区二区三区电影| 国产精品伦一区二区| 欧美精品一区二区三区精品| 日本色综合中文字幕| 999久久久国产精品| 欧美在线看片| 免费黄网站欧美| а√天堂中文在线资源8| 国产欧美日韩视频在线| 在线亚洲免费| 亚洲人成在线网站| 国产精品久久久一区二区| 亚洲福利精品| 波多视频一区| 国产精品黄色| 日韩高清一区二区| 狠狠操综合网| 国产欧美日韩视频在线| 亚洲一区二区动漫| 欧美国产美女| 国产不卡精品| 国产精品色在线网站| 日韩在线网址| 黄色在线一区| 国产在线不卡| 国产精品高颜值在线观看| 在线一区视频观看| 久久99性xxx老妇胖精品| 视频一区二区三区入口| 99国产精品视频免费观看一公开| www.51av欧美视频| 捆绑调教日本一区二区三区| 国产精品一区二区美女视频免费看| 日本成人在线不卡视频| 欧美日韩国产高清电影| 精品一区二区三区亚洲| 国产午夜久久av| 日韩一区二区三区高清在线观看| 日韩中文字幕1| 九一精品国产| 91国语精品自产拍| 久久视频国产| 欧美一区二区三区高清视频 | 99精品视频在线| 给我免费播放日韩视频| av中文字幕在线观看第一页 | 国产成人久久| 日韩激情精品| 在线亚洲观看| 亚洲国产不卡| 在线亚洲成人| 99在线观看免费视频精品观看| 午夜影院欧美| 欧美精品一区二区三区精品| 午夜精品亚洲| 日韩午夜电影| 麻豆精品一区二区综合av| 亚洲一区黄色| 亚洲综合不卡| 日韩精品免费视频一区二区三区 | 欧美日韩视频免费观看| 亚洲欧美伊人| 亚洲一级高清| 国产精品亚洲欧美| 国产精品久久久网站| 日本aⅴ精品一区二区三区| 亚洲精品日韩久久| 国产精品一区二区精品 | 99视频精品免费观看| 五月天久久777| 亚洲毛片视频| 亚洲精品伊人| 国产精品成人3p一区二区三区| 欧美精品中文字幕亚洲专区| 国产一区二区三区精品在线观看| 国产美女高潮在线观看| 国产成人调教视频在线观看| 成人免费网站www网站高清| 久久精品亚洲人成影院| 丝袜a∨在线一区二区三区不卡| 免费的成人av| 国产精品xxxav免费视频| 国产精品羞羞答答在线观看| 欧美黑人巨大videos精品| 欧美黄色一区| 日韩啪啪电影网| 蜜臀久久久99精品久久久久久| 午夜久久av| 高潮一区二区| 怡红院精品视频在线观看极品| 欧美亚洲tv| 国内揄拍国内精品久久| 黄色免费成人| 日韩在线观看中文字幕| 国产欧美日韩在线一区二区| 日韩av在线中文字幕| 国产精品免费99久久久| 久久中文字幕av一区二区不卡| 国产精品1luya在线播放| 国产精品毛片久久| 欧美freesex黑人又粗又大| 91精品国产成人观看| 蜜桃久久久久久| 国产精品中文字幕亚洲欧美| 国产精品中文字幕亚洲欧美 | 久久国产成人| 国产日韩视频| 激情亚洲影院在线观看| 999在线观看精品免费不卡网站| 国产精品自拍区| 精品捆绑调教一区二区三区| 亚洲在线观看| 美女久久精品| 国产不卡精品| 伊人久久婷婷| 国产精品美女在线观看直播|