Penormalan subskrip tatasusunan PostgreSQL: bermula dari 1
Subskrip tatasusunan PostgreSQL boleh bermula dari sebarang nilai. Walau bagaimanapun, operasi tatasusunan boleh dipermudahkan dengan menormalkan subskrip tatasusunan satu dimensi untuk bermula pada 1. Artikel ini meneroka kaedah normalisasi yang lebih elegan yang diperkenalkan dalam PostgreSQL versi 9.6.
Dalam versi PostgreSQL sebelum 9.6, satu pendekatan adalah menggunakan fungsi array_lower
dan array_upper
untuk menentukan julat subskrip:
SELECT ('[5:7]={1,2,3}'::int[])[array_lower('[5:7]={1,2,3}'::int[], 1):array_upper('[5:7]={1,2,3}'::int[], 1)]
Walau bagaimanapun, bermula dengan PostgreSQL 9.6, kaedah yang lebih mudah dan lebih cekap telah muncul: mengetepikan sempadan bawah dan atas penentu hirisan. Mengikut manual:
<code>可以省略切片指定符的下限和/或上限;缺失的边界将被替换为数组下标的下限或上限。</code>
Ini membenarkan penggunaan sintaks normalisasi ringkas:
SELECT my_arr[:];
Sebagai contoh, untuk tatasusunan literal '[5:7]={1,2,3}'
, anda boleh menggunakan:
SELECT ('[5:7]={1,2,3}'::int[])[:];
Pendekatan ini mempunyai prestasi yang serupa dengan pendekatan sebelumnya menggunakan subskrip tatasusunan maksimum berkod keras, tetapi pendekatan ini lebih elegan dan boleh digunakan dengan tatasusunan sebarang saiz.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menormalkan Subskrip Array PostgreSQL dengan Cekap untuk Bermula pada 1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!