دیتاتایپ JSON در اوراکل 21c

همانطور که می دانید از نسخه 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 و دیتابیس اوراکل” توضیح داده ایم.

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

Comment (1)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *