همانطور که می دانید از نسخه 12cR1، دیتابیس اوراکل از JSON پشتیبانی می کند به این معنی که با ارائه چندین تابع، امکان انجام عملیاتی چون اجرای query، ایجاد index و ایجاد view را بر روی فیلدهای JSON Document فراهم می کند.
البته در این نسخه ها(تا قبل از اوراکل 21)، Data Type جدیدی برای JSON معرفی نشده و JSON Documentها باید در نوع داده VARCHAR2، CLOB و یا BLOB ذخیره شوند(نوع داده NCLOB و NVARCHAR2 را هم باید به این مجموعه اضافه کرد) که معمولا نوع داده BLOB برای این کار توصیه می شود(مطالعه مطلب “JSON و دیتابیس اوراکل” پیشنهاد می شود).
SQL> create table tbl_JSON_12c (id number,ettelaat varchar2(4000) constraint jc1 check (ettelaat is json) ); SQL> insert into tbl_JSON_12c values(2,'{“First_Name”:”Vahid”,”Last_Name”:”Usefzadeh”,”Contact”:{“Email”:”vahidusefzadeh@gmail.com”,”Phone”:”091111111117″}}’); 1 row inserted SQL> select t.ETTELAAT.Last_Name,t.ETTELAAT.Contact.Email from tbl_JSON_12c t; LAST_NAME CONTACT ————– —————————- Usefzadeh vahidusefzadeh@gmail.com
اوراکل در نسخه 21c، نوع داده JSON را معرفی کرده است:
SQL> create table tbl_JSON_21c (id number, ettelaat json) ; Table created. SQL> insert into usef.tbl_JSON_21c values(2,'{"First_Name":"Vahid","Last_Name":"Usefzadeh","Contact":{"Email":"vahidusefzadeh@gmail.com","Phone":"091111111117"}}'); 1 row created.
اطلاعات در این نوع از داده، به صورت باینری ذخیره می شوند:
SQL> select * from tbl_JSON_21c t; ID ETTELAAT ---------- -------- 2 <BLOB>
و برای مشاهده اطلاعات ذخیره شده می توان از توابع مربوط به JSON استفاده کرد که یکی از این توابع، json_serialize است:
SQL> select id,json_serialize(t.ettelaat) ettelaat from tbl_JSON_21c t; ID ETTELAAT ---------- --------------------------------- 2{"First_Name":"Vahid","Last_Name":
استفاده از کلمه کلیدی pretty در این تابع، خروجی را به شکل بهتری نمایش می دهد:
select t.id,json_serialize(t.ettelaat pretty) from tbl_JSON_21c t; { "First_Name" : "Vahid", "Last_Name" : "Usefzadeh", "Contact" : { "Email" : "vahidusefzadeh@gmail.com", "Phone" : "091111111117" } }
مثال دیگری از نحوه استفاده از تابع json_serialize را در پرس و جوی زیر مشاهده می کنید:
select json_serialize(t.ETTELAAT.Last_Name) Last_Name,json_serialize(t.ETTELAAT.Contact.Email) Email from tbl_JSON_21c t; LAST_NAME EMAIL "Usefzadeh" "vahidusefzadeh@gmail.com"
علاوه بر تابع json_serialize، می توان از توابعی دیگری نظیر json_value، json_table، json_query و … استفاده کرد که نحوه استفاده هر یک از آنها را قبلا در مطلب “JSON و دیتابیس اوراکل” توضیح داده ایم.
Comments (2)