جدول 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عملکرد تقریباً همان عملکرد این توابع را تأمین می کند.)
خبرهای فارکس...
ما را در سایت خبرهای فارکس دنبال می کنید
برچسب : نویسنده : عفت السادات شجاعی بازدید : 51 تاريخ : جمعه 4 فروردين 1402 ساعت: 15:31