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

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

DDD
DDDオリジナル
2025-01-09 12:12:42348ブラウズ

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

PostgreSQL 配列添字を正規化するための簡略化された方法

PostgreSQL では、配列添字を任意の値から開始できます。ただし、場合によっては、インデックス 1 から始まるように 1 次元配列を正規化する必要があります。

前のソリューションでは、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 class="language-sql">SELECT my_arr[:];</code>

ここで示した例では、括弧によって構文が明確になっています。

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

この最適化されたソリューションは、前世代のソリューションと同様に動作するため、PostgreSQL 9.6 以降で推奨される方法です。古いバージョン (9.5 以前) では、配列添字の最大値をハードコーディングすることが依然として推奨されるアプローチです。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。