ホームページ > データベース > mysql チュートリアル > PostgreSQL 配列の添字を 1 から始まるように効率的に正規化するにはどうすればよいですか?

PostgreSQL 配列の添字を 1 から始まるように効率的に正規化するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-09 12:06:42
オリジナル
748 人が閲覧しました

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

PostgreSQL 配列添字の正規化: 1 から開始

PostgreSQL 配列の添字は、任意の値から始めることができます。ただし、1 次元配列の添字を 1 から始まるように正規化することで、配列の操作を簡素化できます。この記事では、PostgreSQL バージョン 9.6 で導入された、より洗練された正規化方法について説明します。

9.6 より前のバージョンの PostgreSQL では、array_lower 関数と array_upper 関数を使用して添え字の範囲を指定する方法がありました。

<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>
ログイン後にコピー

しかし、PostgreSQL 9.6 以降では、スライス指定子の下限と上限を省略するという、よりシンプルで効率的な方法が登場しました。マニュアルによると:

<code>可以省略切片指定符的下限和/或上限;缺失的边界将被替换为数组下标的下限或上限。</code>
ログイン後にコピー

これにより、簡潔な正規化構文の使用が可能になります:

<code class="language-sql">SELECT my_arr[:];</code>
ログイン後にコピー

たとえば、配列リテラル '[5:7]={1,2,3}' の場合、次を使用できます:

<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[:];</code>
ログイン後にコピー

このアプローチは、ハードコーディングされた最大配列添字を使用する以前のアプローチと同様のパフォーマンスを備えていますが、より洗練されており、任意のサイズの配列で使用できます。

以上がPostgreSQL 配列の添字を 1 から始まるように効率的に正規化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート