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

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

Linda Hamilton
Linda Hamiltonasal
2025-01-09 12:06:42766semak imbas

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

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:

<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>

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:

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

Sebagai contoh, untuk tatasusunan literal '[5:7]={1,2,3}', anda boleh menggunakan:

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

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!

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