

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# ARRAY\$1POSITION 関数
<a name="array_position"></a>

配列内の指定された要素の最初の出現の位置 (インデックス) を返します。インデックスは 0 ベースで、0 は最初の要素を示し、1 は 2 番目の要素を示します。配列内に要素が見つからない場合は、-1 を返します。

この関数は、最初に出現した位置のみを返します。すべての出現箇所を検索するには、[ARRAY\$1POSITIONS 関数](array_positions.md) 関数の使用を検討してください。

## 構文
<a name="array_position-syntax"></a>

```
ARRAY_POSITION( array, value [, null_match] )
```

## 引数
<a name="array_position-arguments"></a>

 *array*   
検索する配列を指定する SUPER 式。

 *値*   
検索する要素を指定する値。

 *null\$1match*   
NULL 値の処理方法を指定するブール値:  
+ *null\$1match* = FALSE: NULL を検索すると、NULL が返されます。配列に NULL 値が含まれており、NULL 以外の検索値に一致するものが見つからない場合は、NULL が返されます。
+ *null\$1match* = TRUE: NULL は、有効な、検索可能な要素として扱われます。配列に NULL 値が含まれており、NULL 以外の検索値に一致するものが見つからない場合は、-1 を返します。
デフォルトは TRUE です。  
デフォルトの NULL 処理は、設定オプションで指定することもできます。  

```
-- same as null_match = TRUE
SET default_array_search_null_handling to TRUE;
```

## 戻り型
<a name="array_position-return-type"></a>

ARRAY\$1POSITION 関数は INT 型を返します。

## 例
<a name="array_position-example"></a>

次の例は、ARRAY\$1POSITION 関数を示しています。

```
SELECT ARRAY_POSITION(ARRAY('red', 'green'), 'red');
 array_position 
----------------
              0
(1 row)

SELECT ARRAY_POSITION(ARRAY(1, 2, 3), 4);
 array_position 
----------------
             -1
(1 row)

-- only the position of the first occurrence is returned
SELECT ARRAY_POSITION(ARRAY('red', 'green', 'red'), 'red');
 array_position 
----------------
              0
(1 row)
```

次の例は、*null\$1match* を TRUE に設定した場合の関数の動作を示しています。

```
SET default_array_search_null_handling to TRUE;

-- NULL search is enabled
SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), NULL);
 array_position 
----------------
              1
(1 row)

-- The array can contain NULLs
SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), 'blue', TRUE);
 array_position 
----------------
             -1
(1 row)
```

次の例は、*null\$1match* を FALSE に設定した場合の関数の動作を示しています。関数内で *null\$1match* 動作を指定すると、デフォルト設定が上書きされることに注意してください。

```
-- same as null_match = TRUE
SET default_array_search_null_handling to TRUE;

-- NULL search is disabled. The default behavior is overridden
SELECT ARRAY_POSITION(ARRAY('red', 'green'), NULL, FALSE);
 array_position 
----------------
               
(1 row)

-- same as null_match = FALSE
SET default_array_search_null_handling to FALSE;

-- The array contains NULL and a match is found
SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), 'green');
 array_position 
----------------
              2
(1 row)

-- The array contains NULL but no match is found
SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), 'blue');
 array_position 
----------------
               
(1 row)
```

## 関連情報
<a name="array_position-see-also"></a>
+ [ARRAY\$1POSITIONS 関数](array_positions.md)
+ [ARRAY\$1CONTAINS 関数](array_contains.md)
+ [SUBARRAY 関数](r_subarray.md)