すべてのプロダクト
Search
ドキュメントセンター

PolarDB:配列関数と演算子

最終更新日:May 31, 2024

このトピックでは、PolarDB for PostgreSQL (Compatible with Oracle) でサポートされている配列演算子と配列関数について説明します。

配列演算子

次の表に、配列型で使用できる関数を示します。

配列関数

  1. 最初の配列には2番目の配列が含まれていますか。つまり、2番目の配列に表示される各要素は、最初の配列の一部の要素に等しくなりますか? (重複は特別に扱われないため、ARRAY[1]ARRAY[1,1] はそれぞれ他方を含むと見なされます。)

anyarray @> anyarray → ブール値
ARRAY[1,4,3] @> ARRAY[3,1,3] → t 
  1. 最初の配列は2番目の配列に含まれていますか?

anyarray <@ anyarray → ブール値
ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] → t 
  1. 配列は重複していますか? つまり、要素が共通していますか?

anyarray && anyarray → ブール値
ARRAY[1,4,3] && ARRAY[2,1] → t 
  1. 2つの配列を連結します。 nullまたは空の配列を連結することはno-opです。それ以外の場合、配列は同じ次元数を持つ必要があります (最初の例で示したように) 、または次元数が1つ異なる必要があります (2番目の例で示したように) 。 配列が同一の要素型でない場合、それらは共通型に強制されます。

anyarray | | anyarray → anyarray
ARRAY[1,2,3] | | ARRAY[4,5,6,7] → {1,2,3,4,5,6,7}
ARRAY[1,2,3] | | ARRAY[[4,5,6],[7,8,9]]] → {{1,2,3 },{ 4,5,6 },{ 7,8,9}} 
  1. 要素を配列の前面に連結します (空または1次元である必要があります) 。

anyelement | | anyarray → anyarray
3 | | ARRAY[4,5,6] → {3,4,5,6} 
  1. 要素を配列の末尾に連結します (空または1次元である必要があります) 。

anyarray | | anyelement → anyarray
ARRAY[4,5,6] | | 7 → {4,5,6,7} 

関数

  1. 配列の末尾に要素を追加します (anypatiblearray | anypatible演算子と同じ) 。

array_append ( anyarray, anyelement ) → anyarray
array_append(ARRAY[1,2], 3) → {1,2,3} 
  1. 2つの配列を連結します (anycompatiblearray | | anycompatiblearray演算子と同じ) 。

array_cat ( anyarray, anyarray ) → anyarray
array_cat(ARRAY[1,2,3], ARRAY[4,5]) → {1,2,3,4,5} 
  1. 配列の次元のテキスト表現を返します。

array_dims ( anyarray ) → テキスト
array_dims(ARRAY[[1,2,3], [4,5,6]]) → [1:2][1:3] 
  1. 2番目の引数で指定された長さの次元を持つ、指定された値のコピーで満たされた配列を返します。 オプションの3番目の引数は、各ディメンションの下限値を提供します (デフォルトではすべての1) 。

array_fill ( anyelement, integer[] [, integer[] ] ) → anyarray
array_fill(11, ARRAY[2,3]) → {{11,11,11 },{ 11,11,11}}
array_fill(7, ARRAY[3], ARRAY[2]) → [2:4]={7,7,7} 
  1. 要求された配列ディメンションの長さを返します。 (空または欠落した配列次元の0の代わりにNULLを生成します。)

array_length ( anyarray, integer ) → integer
array_length(array[1,2,3], 1) → 3 
  1. 要求された配列ディメンションの下限を返します。

array_lower ( anyarray, integer ) → integer
array_lower('[0:2]={1,2,3}'::integer[], 1) → 0 
  1. 配列の次元数を返します。

array_ndims ( anyarray ) → integer
array_ndims(ARRAY[[1,2,3], [4,5,6]]) → 2 
  1. 配列内の2番目の引数の最初の出現の下付き文字を返します。存在しない場合はNULLを返します。 3番目の引数が与えられている場合、検索はその下付き文字から始まります。 アレイは1次元でなければならない。 比較はIS NOT DISTINCT FROMセマンティクスを使用して行われるため、NULLを検索することができます。

array_position ( anyarray, anyelement [, integer ] ) → integer
array_position(ARRAY['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'], 'mon') → 2 
  1. 最初の引数として与えられた配列の2番目の引数のすべてのオカレンスのサブスクリプトの配列を返します。 アレイは1次元でなければならない。 比較はIS NOT DISTINCT FROMセマンティクスを使用して行われるため、NULLを検索することができます。NULLは、配列がNULLの場合にのみ返されます。値が配列内に見つからない場合は、空の配列が返されます。

array_positions ( anyarray, anyelement ) → integer[]
array_positions(ARRAY['A','A','B','A'], 'A') → {1,2,4} 
  1. 配列の先頭に要素の先頭を追加します (anycompatible | | anycompatiblearray演算子と同じ) 。

array_prepend ( anyelement, anyarray ) → anyarray
array_prepend(1, ARRAY[2,3]) → {1,2,3} 
  1. 指定された値に等しいすべての要素を配列から削除します。 アレイは1次元でなければならない。 比較はIS NOT DISTINCT FROMセマンティクスを使用して行われるため、NULLを削除できます。

array_remove ( anyarray, anyelement ) → anyarray
array_remove(ARRAY[1,2,3,2], 2) → {1,3} 
  1. 2番目の引数に等しい各配列要素を3番目の引数に置き換えます。

array_replace ( anyarray, anyelement, anyelement ) → anyarray
array_replace(ARRAY[1,2,5,4], 5, 3) → {1,2,3,4} 
  1. 各配列要素をテキスト表現に変換し、区切り文字列で区切られたものを連結します。 null_stringが指定され、NULLではない場合、NULL配列エントリはその文字列で表されます。

array_to_string ( array anyarray, delimiter text [, null_string text ] ) → text
array_to_string(ARRAY [1,2,3, NULL, 5], ',' * ') → 1,2,3,*,5 
  1. 要求された配列ディメンションの上限を返します。

array_upper ( anyarray, integer ) → integer
array_upper(ARRAY[1,8,3,7], 1) → 4 
  1. 配列内の要素の総数を返します。配列が空の場合は0を返します。

カーディナリティ (anyarray ) → 整数
cardinality(ARRAY[[1,2],[3,4]]) → 4 
  1. 区切り文字が発生したときに文字列を分割し、残りのデータをテキスト配列に形成します。 区切り文字がNULLの場合、文字列内の各文字は配列内の個別の要素になります。 区切り文字が空の文字列の場合、文字列は単一のフィールドとして扱われます。 null_stringが提供され、NULLでない場合、その文字列に一致するフィールドはNULLエントリに変換されます。

string_to_array ( string text, delimiter text [, null_string text ] ) → text[]
string_to_array('xx ~~ yy ~~ zz', '~~', 'yy') → {xx,NULL,zz} 
  1. 配列を行のセットに展開します。 アレイの要素は、記憶順に読み出される。

unnest ( anyarray ) → setof anyelement
unnest(ARRAY[1,2]) →
 1
 2 
  1. 複数の配列 (おそらく異なるデータ型) を行のセットに展開します。 配列がすべて同じ長さでない場合、短い配列はNULLでパディングされます。 このフォームは、クエリのFROM句でのみ使用できます。

unnest ( anyarray, anyarray [, ... ] ) → setof anyelement, anyelement [, ... ]
select * from unnest(ARRAY[1,2], ARRAY['foo','bar','baz']) as x(a,b) →
 a | b
--- ------
 1 | foo
 2 | バー
   | バズ