9. 15توابع و اپراتورهای JSON

ساخت وبلاگ

جدول 9-40 اپراتورهایی را که برای استفاده با دو نوع داده JSON در دسترس هستند نشان می دهد (به بخش 8. 14 مراجعه کنید).

جدول 9-40.jsonوتjsonbعملگر

 

اپراتور نوع عمل راست شرح مثال نتیجه
-> در نظر گرفتن عناصر آرایه JSON را دریافت کنید (از صفر ، عدد صحیح منفی از انتها حساب می شود) '[,,]'::json->2
-> متن قسمت JSON Object را با کلید دریافت کنید '>'::json->'آ'
->> در نظر گرفتن عنصر array json را به عنوان دریافت کنیدمتن '[1,2,3]'::json->>2 3
->> متن زمینه JSON Object را به عنوان دریافت کنیدمتن ''::json->>"ب" 2
#> متن [] شیء JSON را در مسیر مشخص دریافت کنید '>>'::json#>''
#>> متن [] شیء JSON را در مسیر مشخص به عنوان دریافت کنیدمتن ''::json#>>'' 3

توجه: انواع موازی این اپراتورها برای هر دو وجود داردjsonوتjsonbانواعاپراتورهای استخراج Field/Element/Path همان نوع ورودی سمت چپ خود را برمی گردانند (یاjsonیاjsonb) ، به جز مواردی که به عنوان بازگشت مشخص شده اندمتن، که ارزش متن را به خود جلب می کند. اگر ورودی JSON ساختار مناسبی برای مطابقت با درخواست نداشته باشد ، اپراتورهای استخراج فیلد/عنصر/مسیر به جای عدم موفقیت ، تهی می کنند. به عنوان مثال اگر چنین عنصری وجود نداشته باشد. اپراتورهای استخراج Field/Element/PATH که اشتراک های آرایه JSON عدد صحیح را می پذیرند ، همه از اشتراک منفی از انتهای آرایه ها پشتیبانی می کنند.

اپراتورهای مقایسه استاندارد نشان داده شده در جدول 9-1 برایjsonb، اما نه برایjsonبشرآنها قوانین سفارش را برای عملیات درخت B بیان شده در بخش 8. 14. 4 دنبال می کنند.

برخی از اپراتورهای دیگر نیز فقط برایjsonb، همانطور که در جدول 9-41 نشان داده شده است. بسیاری از این اپراتورها می توانند توسطjsonbکلاسهای اپراتور. برای توصیف کامل ازjsonbمعانی مهار و وجود ، به بخش 8. 14. 3 مراجعه کنید. بخش 8. 14. 4 نحوه استفاده از این اپراتورها را برای نمایه سازی مؤثر توصیف می کندjsonbداده ها.

جدول 9-41. اضافیjsonbعملگر

 

اپراتور نوع عمل راست شرح مثال
@> jsonb آیا مقدار JSON سمت چپ حاوی ورودی های مسیر/ارزش JSON راست در سطح بالا است؟ ''::jsonb @>'' :: JSONB
  jsonb آیا ورودی های مسیر/ارزش JSON سمت چپ در سطح بالا در مقدار JSON سمت راست موجود است؟ '' :: JSONB<@ ''::jsonb
? متن آیا رشته به عنوان یک کلید سطح بالا در مقدار JSON وجود دارد؟ '' :: JSONB؟"ب"
?| متن [] آیا هر یک از این رشته های آرایه به عنوان کلیدهای سطح بالا وجود دارد؟ '' :: JSONB؟ |آرایه ['B' ، 'C']
?& متن [] آیا همه این رشته های آرایه به عنوان کلیدهای سطح بالا وجود دارند؟ '["A" ، "B"] :: JSONB؟ & ARRAY [' A '،' B ']
|| jsonb دو نفر را جمع کنیدjsonbارزش ها را به یک جدیدjsonbارزش '["A" ، "B"] :: JSONB ||'["C" ، "D"] :: JSONB
- متن حذف جفت کلید/مقدار یا عنصر رشته از عمل چپ. جفت های کلید/مقدار بر اساس مقدار کلید آنها مطابقت دارند. '' :: jsonb - 'a'
- عدد صحیح عنصر آرایه را با شاخص مشخص شده حذف کنید (تعداد اعداد صحیح از انتها شمارش می شود). اگر کانتینر سطح بالا آرایه ای نباشد ، خطایی را به وجود می آورد. '["A" ، "B"] :: JSONB - 1
#- متن [] فیلد یا عنصر را با مسیر مشخص حذف کنید (برای آرایه های JSON ، عدد صحیح منفی از انتها حساب می شود) '["a" ،]' :: jsonb #- ''

توجه داشته باشید که||اپراتور با تولید یک شیء حاوی اتحاد کلیدهای خود ، دو شیء JSON را به هم می پیوندد و مقدار شیء دوم را در هنگام وجود کلیدهای تکراری در نظر می گیرد. همه موارد دیگر یک آرایه JSON تولید می کنند: اول ، هر ورودی غیر آرایه به یک آرایه تک عنصر تبدیل می شود ، و سپس دو آرایه به هم پیوسته می شوند. به صورت بازگشتی عمل نمی کند. فقط آرایه سطح بالا یا ساختار شیء ادغام می شود.

جدول 9-42 توابع موجود برای ایجاد را نشان می دهدjsonوتjsonbارزش های.(هیچ کارکرد معادل برای آن وجود نداردjsonb، ازrow_to_jsonوتarray_to_jsonکارکرد. با این حالto_jsonbعملکرد تقریباً همان عملکرد این توابع را تأمین می کند.)

خبرهای فارکس...
ما را در سایت خبرهای فارکس دنبال می کنید

برچسب : نویسنده : عفت السادات شجاعی بازدید : <-PostHit-> تاريخ : جمعه 4 فروردين 1402 ساعت: 15:31