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
Lepaskan: 2025-01-09 12:06:42
asal
762 orang telah melayarinya

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:

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)]
Salin selepas log masuk

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>
Salin selepas log masuk

Ini membenarkan penggunaan sintaks normalisasi ringkas:

SELECT my_arr[:];
Salin selepas log masuk

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

SELECT ('[5:7]={1,2,3}'::int[])[:];
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan