PostgreSQL の配列の長さ

Bilal Shahid 2024年2月15日
  1. PostgreSQL array_length() 機能
  2. PostgreSQL cardinality() 機能
  3. array_length() 関数を使用して PostgreSQL で配列の長さを取得する
  4. cardinality() 関数を使用して PostgreSQL で配列の長さを取得する
  5. まとめ
PostgreSQL の配列の長さ

この記事では、PostgreSQL の 2つの関数 array_length()cardinality() のいずれかを使用して配列の長さを計算する方法について説明します。 これらの関数は両方とも、PostgreSQL のいくつかの例で詳細に説明されています。

配列は PostgreSQL でデータ型として使用されています。 配列の使用には、多くの機能が関連付けられています。

配列の長さの計算から特定の配列要素の検索まで、すべて PostgreSQL でサポートされている機能によってカバーされます。

PostgreSQL array_length() 機能

配列の長さの計算に役立つ 2つの重要な関数の 1つは、array_length() 関数です。 これは、2つのパラメーターを使用して任意の配列の長さを計算する最も基本的な関数です: 配列と、長さを計算する必要がある対応する配列の次元 (配列が多次元の場合)。

この記事には、array_length() 機能を使用して単一および多次元配列の長さを計算する例が含まれています。

PostgreSQL cardinality() 機能

配列の長さを計算するために使用される PostgreSQL の 2 番目の関数は cardinality() 関数です。 PostgreSQL バージョン 9.4 以降を実行している場合、ソフトウェアは cardinality() 機能をサポートします。

配列という 1つのパラメーターを受け取ることで機能します。 この関数は、配列内の要素の総数を示す整数値を返します。

cardinality() 機能の使用例を以下に示します。

array_length() 関数を使用して PostgreSQL で配列の長さを取得する

array_length() 関数は、1 次元配列と多次元配列に使用できます。 次の例は、関数の動作を明確にします。

例 1

1 次元配列の長さを計算する最初の例を次に示します。

SELECT array_length(ARRAY[1,2,3], 1);

上記のクエリは、以下の出力を生成します。

PostgreSQL 配列の長さ - 例 1

例 2

パラメータとして空の配列を受け取ったときの array_length() 関数の動作を示しましょう:

SELECT array_length(ARRAY[]::int[], 1);

この場合、出力がゼロであると想定できます。 ただし、関数は NULL 値を返します。 これは、array_length() が空の配列を受け取るたびに NULL 値を与えるように設計されているためです。

クエリ結果は次のとおりです。

PostgreSQL 配列の長さ - 例 2

例 3

以下に示すように、次元が欠落している配列を受け取ると、上記と同様の動作が array_length() 関数によって示されます。

SELECT array_length(ARRAY[1,2,3], 2);

この場合、関数はパラメーターとして 1 次元配列を受け取りました。 ただし、配列の 2 番目の次元のサイズを返すよう関数に要求します。 これにより、NULL 値が生成されます。

注: array_length() 関数は、空の配列または次元のない配列を受け取ると、同じ値を生成します。 これにより、配列の次元が欠落している場合にユーザーがエラーを検出することが難しくなります。

この例の出力を以下に添付します。

PostgreSQL 配列の長さ - 例 3

例 4

多次元配列での関数の動作について説明しましょう。 以下の 2つのクエリは、array_length() 関数の完全な洞察を提供します。

クエリ 1:

array_length() 関数には、2 次元配列がパラメーターとして渡されます。 最初の次元の長さを計算することになっています。

SELECT array_length(ARRAY[[1, 2], [3, 4], [5, 6]], 1);

クエリは次の結果を生成します。

PostgreSQL 配列の長さ - 例 4 クエリ 1

クエリ 2:

2 番目のクエリは、同じ配列をパラメーターとして array_length() 関数に渡します。 ただし、配列の 2 番目の次元の長さを要求します。

SELECT array_length(ARRAY[[1, 2], [3, 4], [5, 6]], 2);

クエリは次の結果を生成します。

PostgreSQL 配列の長さ - 例 4 クエリ 2

注: 2つのクエリは、多次元配列での array_length() 関数の動作を理解するための優れた例です。

cardinality() 関数を使用して PostgreSQL で配列の長さを取得する

cardinality() 関数は、単一および多次元配列に使用できます。 関数の動作を明確にするいくつかの例を以下に添付します。

cardinality() 関数のパラメータとして同一の配列が使用されます。 これは、cardinality() 関数の動作を理解するのに役立ち、同時に、配列の長さを計算する 2つの方法を区別するのに役立ちます。

例 1

array_length() 関数セクションで、例 1 と同じ配列を使用しました。

SELECT cardinality(ARRAY[1,2,3]);

以下に示すように、クエリは要素の総数を計算し、予想される結果を表示します。

PostgreSQL カーディナリティ - 例 1

例 2

cardinality() 関数は、空の配列がパラメーターとして渡されると、異なる動作をします。 array_length() とは対照的に、cardinality() 関数は空の配列の場合にゼロを表示します。

SELECT cardinality(ARRAY[]::int[]);

クエリの結果を以下に添付します。

PostgreSQL カーディナリティ - 例 2

例 3

cardinality() 関数のパラメーターとして 1 次元のテキストベースの配列が渡され、期待どおりに動作します。

SELECT cardinality(ARRAY['hello', 'to', 'example', 'three']);

クエリの結果を以下に添付します。

PostgreSQL カーディナリティ - 例 3

例 4

多次元配列を使用した cardinality() の機能に移ると、各配列次元の要素の総数が返されます。

SELECT cardinality(ARRAY[[1, 2], [3, 4], [5, 6]]);

2 次元配列には合計 6つの要素があります。 したがって、次のように cardinality() 関数も同じ数値を返す必要があります。

PostgreSQL カーディナリティ - 例 4

例 5

テキストベースの多次元配列は、整数ベースの多次元配列と同様に機能します。

SELECT cardinality(ARRAY[['hello'], ['there']]);

要素の総数は、cardinality() 関数によって返されます。

PostgreSQL カーディナリティ - 例 5

まとめ

array_length()cardinality() 関数はどちらも配列の長さを計算します。 ただし、どちらも別々に機能します。 2つの関数の違いを示すために、記事全体で多数の例が強調表示されています。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub