9.19. ФÑнкÑии и опеÑаÑоÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¼Ð°ÑÑивами #
РТаблиÑе 9.54 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¸Ð¼ÐµÑÑиеÑÑ ÑпеÑиалÑнÑе опеÑаÑоÑÑ Ð´Ð»Ñ Ñипов-маÑÑивов. ÐÑоме Ð½Ð¸Ñ Ð´Ð»Ñ Ð¼Ð°ÑÑивов опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð¾Ð±ÑÑнÑе опеÑаÑоÑÑ ÑÑавнениÑ, показаннÑе в ТаблиÑе 9.1. ÐÑи опеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑопоÑÑавлÑÑÑ ÑодеÑжимое маÑÑивов по ÑлеменÑам, иÑполÑзÑÑ Ð¿Ñи ÑÑом ÑÑнкÑÐ¸Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ B-деÑева, опÑеделÑннÑÑ Ð´Ð»Ñ Ñипа данного ÑлеменÑа по ÑмолÑаниÑ, и ÑпоÑÑдоÑиваÑÑ Ð¸Ñ Ð¿Ð¾ пеÑÐ²Ð¾Ð¼Ñ ÑазлиÑиÑ. РмногомеÑнÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ð°Ñ ÑлеменÑÑ Ð¿ÑоÑмаÑÑиваÑÑÑÑ Ð¿Ð¾ ÑÑÑокам (Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ñледней ÑазмеÑноÑÑи менÑеÑÑÑ Ð² пеÑвÑÑ Ð¾ÑеÑедÑ). ÐÑли ÑодеÑжимое двÑÑ Ð¼Ð°ÑÑивов ÑовпадаеÑ, а ÑазмеÑноÑÑи оÑлиÑаÑÑÑÑ, ÑезÑлÑÑÐ°Ñ Ð¸Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð¿ÐµÑвÑм оÑлиÑием в ÑазмеÑноÑÑÑÑ .
ТаблиÑа 9.54. ÐпеÑаÑоÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¼Ð°ÑÑивами
ÐпеÑаÑÐ¾Ñ ÐпиÑание ÐÑимеÑ(Ñ) |
|---|
ÐеÑвÑй маÑÑив ÑодеÑÐ¶Ð¸Ñ Ð²ÑоÑой (имееÑÑÑ Ð»Ð¸ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа вÑоÑого маÑÑива ÑавнÑй ÐµÐ¼Ñ Ð² пеÑвом)? (ÐовÑоÑÑÑÑиеÑÑ ÑлеменÑÑ ÑаÑÑмаÑÑиваÑÑÑÑ Ð½Ð° обÑиÑ
оÑнованиÑÑ
, поÑÑÐ¾Ð¼Ñ Ð¼Ð°ÑÑивÑ
|
ÐеÑвÑй маÑÑив ÑодеÑжиÑÑÑ Ð²Ð¾ вÑоÑом?
|
ÐаÑÑÐ¸Ð²Ñ Ð¿ÐµÑеÑекаÑÑÑÑ (Ñ Ð½Ð¸Ñ ÐµÑÑÑ Ð¾Ð±Ñие ÑлеменÑÑ)?
|
СоединÑÐµÑ Ð´Ð²Ð° маÑÑива. ÐÑли один из опеÑандов â NULL или пÑÑÑой маÑÑив, опеÑаÑÐ¾Ñ Ð½Ð¸ÐºÐ°Ðº не дейÑÑвÑеÑ; в пÑоÑивном ÑлÑÑае ÑиÑло ÑазмеÑноÑÑей маÑÑивов должно бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñм (ÑÑÐ¾Ñ ÑлÑÑай показан в пеÑвом пÑимеÑе) или могÑÑ Ð¾ÑлиÑаÑÑÑÑ Ð½Ð° один (ÑÑо иллÑÑÑÑиÑÑÐµÑ Ð²ÑоÑой пÑимеÑ). ÐÑли ÑÑо маÑÑÐ¸Ð²Ñ Ð½Ðµ одинаковÑÑ Ñипов ÑлеменÑов, они бÑдÑÑ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ðº обÑÐµÐ¼Ñ ÑÐ¸Ð¿Ñ (Ñм. Раздел 10.5).
|
ÐÑÑавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² наÑало маÑÑива (маÑÑив должен бÑÑÑ Ð¿ÑÑÑÑм или одномеÑнÑм).
|
ÐÑÑавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÐºÐ¾Ð½ÐµÑ Ð¼Ð°ÑÑива (маÑÑив должен бÑÑÑ Ð¿ÑÑÑÑм или одномеÑнÑм).
|
ÐодÑобнее поведение опеÑаÑоÑов Ñ Ð¼Ð°ÑÑивами опиÑано в Разделе 8.15. Ðа дополниÑелÑнÑми ÑведениÑми об опеÑаÑоÑÐ°Ñ , поддеÑживаÑÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑÑ, обÑаÑиÑеÑÑ Ðº РазделÑ 11.2.
РТаблиÑе 9.55 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¼Ð°ÑÑивами. ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ð½Ð¸Ñ Ð¸ пÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð² Разделе 8.15.
ТаблиÑа 9.55. ФÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¼Ð°ÑÑивами
ФÑнкÑÐ¸Ñ ÐпиÑание ÐÑимеÑ(Ñ) |
|---|
ÐобавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÐºÐ¾Ð½ÐµÑ Ð¼Ð°ÑÑива (Ñак же, как опеÑаÑоÑ
|
СоединÑÐµÑ Ð´Ð²Ð° маÑÑива (Ñак же, как опеÑаÑоÑ
|
ÐозвÑаÑÐ°ÐµÑ ÑекÑÑовое пÑедÑÑавление ÑазмеÑноÑÑей маÑÑива.
|
ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив, заполненнÑй заданнÑм знаÑением и имеÑÑий ÑазмеÑноÑÑи, ÑказаннÑе во вÑоÑом аÑгÑменÑе. РнеобÑзаÑелÑном ÑÑеÑÑем аÑгÑменÑе могÑÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½Ñ Ð½Ð¸Ð¶Ð½Ð¸Ðµ гÑаниÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑазмеÑноÑÑи (по ÑмолÑаниÑ
|
ÐозвÑаÑÐ°ÐµÑ Ð´Ð»Ð¸Ð½Ñ Ñказанной ÑазмеÑноÑÑи маÑÑива. (ÐÐ»Ñ Ð¿ÑÑÑÑÑ Ð¸Ð»Ð¸ неÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑазмеÑноÑÑей маÑÑива вÑдаÑÑ Ð½Ðµ 0, а NULL.)
|
ÐозвÑаÑÐ°ÐµÑ Ð½Ð¸Ð¶Ð½ÑÑ Ð³ÑаниÑÑ Ñказанной ÑазмеÑноÑÑи маÑÑива.
|
ÐозвÑаÑÐ°ÐµÑ ÑиÑло ÑазмеÑноÑÑей маÑÑива.
|
ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿ÐµÑвого вÑ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²ÑоÑого аÑгÑменÑа в маÑÑиве либо
|
ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив позиÑий вÑеÑ
вÑ
ождений вÑоÑого аÑгÑменÑа в одномеÑном маÑÑиве, заданном пеÑвÑм аÑгÑменÑом. ÐÑа ÑÑнкÑÐ¸Ñ Ð¾Ð¿ÑеделÑÐµÑ ÑавенÑÑво как
|
ÐÑÑавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² наÑало маÑÑива (Ñак же, как опеÑаÑоÑ
|
УдалÑÐµÑ Ð¸Ð· маÑÑива вÑе ÑлеменÑÑ, ÑавнÑе Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ. ÐаÑÑив должен бÑÑÑ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑм. ÐÑа ÑÑнкÑÐ¸Ñ Ð¾Ð¿ÑеделÑÐµÑ ÑавенÑÑво как
|
ÐаменÑÐµÑ ÐºÐ°Ð¶Ð´Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива, ÑавнÑй вÑоÑÐ¾Ð¼Ñ Ð°ÑгÑменÑÑ, знаÑением ÑÑеÑÑего аÑгÑменÑа.
|
ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив из
|
СлÑÑайнÑм обÑазом пеÑемеÑÐ¸Ð²Ð°ÐµÑ ÑлеменÑÑ Ð¿ÐµÑвой ÑазмеÑноÑÑи маÑÑива.
|
ÐÑедÑÑавлÑÐµÑ Ð²Ñе ÑлеменÑÑ Ð¼Ð°ÑÑива в виде ÑекÑÑовÑÑ
ÑÑÑок и обÑединÑÐµÑ ÑÑи ÑÑÑоки ÑеÑез ÑазделиÑелÑ, заданнÑй паÑамеÑÑом
|
ÐозвÑаÑÐ°ÐµÑ Ð²ÐµÑÑ Ð½ÑÑ Ð³ÑаниÑÑ Ñказанной ÑазмеÑноÑÑи маÑÑива.
|
ÐозвÑаÑÐ°ÐµÑ Ð¾Ð±Ñее ÑиÑло ÑлеменÑов в маÑÑиве (0, еÑли маÑÑив пÑÑÑ).
|
СокÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив, ÑдалÑÑ Ð¿Ð¾Ñледние
|
РазвоÑаÑÐ¸Ð²Ð°ÐµÑ Ð¼Ð°ÑÑив в Ð½Ð°Ð±Ð¾Ñ ÑÑÑок. ÐлеменÑÑ Ð¼Ð°ÑÑива пÑоÑиÑÑваÑÑÑÑ Ð² поÑÑдке Ñ ÑанениÑ.
1 2
foo bar baz quux |
РазвоÑаÑÐ¸Ð²Ð°ÐµÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ (возможно ÑазнÑÑ
Ñипов) в Ð½Ð°Ð±Ð¾Ñ ÐºÐ¾ÑÑежей. ÐÑли маÑÑÐ¸Ð²Ñ Ð¸Ð¼ÐµÑÑ ÑазнÑÑ Ð´Ð»Ð¸Ð½Ñ, коÑÑежи дополнÑÑÑÑÑ Ð´Ð¾ болÑÑей Ð´Ð»Ð¸Ð½Ñ Ð·Ð½Ð°ÑениÑми
a | b ---+----- 1 | foo 2 | bar | baz |
ÐÑ Ñакже можеÑе ÑзнаÑÑ Ð¾Ð± агÑегаÑной ÑÑнкÑии, ÑабоÑаÑÑей Ñ Ð¼Ð°ÑÑивами, array_agg в Разделе 9.21.