

 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/)を参照してください。

# JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT 関数
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT"></a>

**注記**  
JSON\$1PARSE および関連する関数は、JSON 値を SUPER として解析します。Amazon Redshift は、VARCHAR よりも SUPER をより効率的に解析します。  
JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT を使用する代わりに、[JSON\$1PARSE 関数](JSON_PARSE.md) を使用して JSON 文字列を解析し、SUPER 値を取得することをお勧めします。次に、`value[element position]` 構文を使用し、必要とする配列インデックスが含まれている要素をクエリします。SUPER 値の配列要素に対するクエリ実行の詳細については、「[半構造化データのクエリ](query-super.md)」を参照してください。

JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT 関数は、JSON 文字列の最外部の配列内の JSON 配列要素 (0 から始まるインデックスを使用) を返します。配列内の最初の要素の位置は 0 です。インデックスが負または範囲外である場合、JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT は `NULL` 文字列を返します。*null\$1if\$1invalid* の引数が `TRUE` に設定され、JSON 文字列が無効になっている場合、この関数はエラーを返す代わりに `NULL` を返します。

詳細については、「[JSON 関数](json-functions.md)」を参照してください。

## 構文
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT-synopsis"></a>

```
JSON_EXTRACT_ARRAY_ELEMENT_TEXT('json string', pos [, null_if_invalid ] )
```

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

 *json\$1string*  
正しくフォーマットされた JSON 文字列。

*pos*  
返される配列要素のインデックスを表す `INTEGER` (0 から始まる配列インデックスを使用)。

*null\$1if\$1invalid*  
(オプション) 入力 JSON 文字列が無効である場合に、エラーを返す代わりに `NULL` を返すかどうかを指定する `BOOLEAN` 値。JSON が無効な場合に `NULL` を返すには、`true` (`t`) を指定します。JSON が無効な場合にエラーを返すには、`false` (`f`) を指定します。デフォルトは `false` です。

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

`VARCHAR`  
*pos* によって参照される JSON 配列要素を表す `VARCHAR` 文字列。

## 例
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT-examples"></a>

配列の位置 2 の要素 (0 から始まる配列インデックスの 3 番目の要素) を返すには、次の例を使用します。

```
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('[111,112,113]', 2);
 
+---------------------------------+
| json_extract_array_element_text |
+---------------------------------+
|                             113 |
+---------------------------------+
```

JSON が無効であるためエラーを返すには、次の例を使用します。

```
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1);
 
ERROR: invalid json array object ["a",["b",1,["c",2,3,null,]]]
```

*null\$1if\$1invalid* を *true* に設定し、ステートメントが無効な JSON のエラーを返す代わりに `NULL` を返すようにするには、次の例を使用します。

```
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1,true);
 
+---------------------------------+
| json_extract_array_element_text |
+---------------------------------+
| NULL                            |
+---------------------------------+
```

次のステートメントサンプルについて考えてみます。指定された JSON 文字列またはインデックスが NULL の場合、JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT は他のパラメータの値を問わず、NULL を返します。

```
--Statement where json_string is NULL.
SELECT json_extract_array_element_text(NULL, 0)

 json_extract_array_element_text
---------------------------------
                            NULL

--Statement where pos is NULL and json_string is invalid JSON.
SELECT json_extract_array_element_text('invalid_json', NULL);

 json_extract_array_element_text
---------------------------------
                            NULL

--Statement where json_string is NULL and null_if_invalid is FALSE.
SELECT json_extract_array_element_text(NULL, 0, FALSE);

 json_extract_array_element_text
---------------------------------
                            NULL
```

次のステートメントサンプルについて考えてみます。*null\$1if\$1invalid* が TRUE の場合、*json\$1string* が無効な JSON であれば、JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT は NULL を返します。*null\$1if\$1invalid* が FALSE であったり、設定されていなかったりする場合、*json\$1string* が無効であれば、この関数はエラーを返します。

```
--Statement with invalid JSON where null_if_invalid is TRUE.
SELECT json_extract_array_element_text('invalid_json', 0, TRUE);

 json_extract_array_element_text
---------------------------------
                            NULL
                            
--Statement with invalid JSON where null_if_invalid is FALSE.
SELECT json_extract_array_element_text('invalid_json', 0);

ERROR:  JSON parsing error
```

*json\$1string* が有効な JSON で、*pos* が JSON `null` 値を参照する、次の例について考えてみます。この場合、JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT は、*null\$1if\$1invalid* の値を問わず、NULL を返します。

```
--Statement selecting a null value.
SELECT json_extract_array_element_text('[null]', 0);

  json_extract_array_element_text 
----------------------------------
                             NULL
```