Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menormalkan Subskrip Array PostgreSQL dengan Mudah untuk Bermula pada 1?

Bagaimanakah Saya Boleh Menormalkan Subskrip Array PostgreSQL dengan Mudah untuk Bermula pada 1?

DDD
DDDasal
2025-01-09 12:12:42348semak imbas

How Can I Easily Normalize PostgreSQL Array Subscripts to Start at 1?

Kaedah ringkas untuk menormalkan subskrip tatasusunan PostgreSQL

PostgreSQL membenarkan subskrip tatasusunan bermula daripada sebarang nilai. Walau bagaimanapun, dalam beberapa kes adalah perlu untuk menormalkan tatasusunan satu dimensi untuk bermula pada indeks 1.

Penyelesaian sebelumnya menggunakan fungsi array_lower() dan array_upper() untuk menentukan julat subskrip yang diingini:

<code class="language-sql">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)]</code>

Sementara pendekatan ini berfungsi, penyelesaian yang lebih elegan telah muncul dalam PostgreSQL 9.6. Dokumentasi kini membenarkan mengabaikan sempadan bawah dan/atau atas untuk penentu hirisan. Jika ditinggalkan, sempadan yang hilang akan lalai kepada indeks tatasusunan terendah atau tertinggi.

Dengan ciri ini, proses penormalan menjadi agak mudah:

<code class="language-sql">SELECT my_arr[:];</code>

Dalam contoh yang disediakan, kurungan memastikan sintaks adalah jelas:

<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[:];</code>

Penyelesaian yang dioptimumkan ini berprestasi serupa dengan penyelesaian generasi sebelumnya, menjadikannya kaedah pilihan untuk PostgreSQL 9.6 dan lebih baru. Untuk versi lama (9.5 dan lebih awal), pengekodan keras subskrip tatasusunan maksimum masih merupakan pendekatan yang disyorkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menormalkan Subskrip Array PostgreSQL dengan Mudah untuk Bermula pada 1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn