

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

# OCTETINDEX 関数
<a name="OCTETINDEX"></a>

OCTETINDEX 関数は、文字列内の部分文字列の位置をバイト数として返します。

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

```
OCTETINDEX(substring, string)
```

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

 *substring*   
`CHAR` 文字列、`VARCHAR` 文字列、あるいは `CHAR` または `VARCHAR` 型に暗黙的に評価される式。

 *string*   
`CHAR` 文字列、`VARCHAR` 文字列、あるいは `CHAR` または `VARCHAR` 型に暗黙的に評価される式。

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

 INTEGER   
OCTETINDEX 関数は、*string* 内の *substring* の位置に対応する `INTEGER` 値をバイト数として返します。ここで、*string* の最初の文字は 1 としてカウントされます。*string* にマルチバイト文字が含まれていない場合、結果は CHARINDEX 関数の結果と等しくなります。*string* に *substring* が含まれない場合、この関数は `0` を返します。*substring* が空の場合、この関数は `1` を返します。

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

文字列 `Amazon Redshift` のサブ文字列 `q` の位置を返すには、次の例を使用します。*substring* は *string* に含まれていないため、この例では `0` を返します。

```
SELECT OCTETINDEX('q', 'Amazon Redshift');

+------------+
| octetindex |
+------------+
|          0 |
+------------+
```

文字列 `Amazon Redshift` の空のサブ文字列の位置を返すには、次の例を使用します。*substring* は空であるため、この例では `1` を返します。

```
SELECT OCTETINDEX('', 'Amazon Redshift');

+------------+
| octetindex |
+------------+
|          1 |
+------------+
```

文字列 `Amazon Redshift` のサブ文字列 `Redshift` の位置を返すには、次の例を使用します。この例では、*substring* が *string* の 8 バイト目から始まるため、`8` を返します。

```
SELECT OCTETINDEX('Redshift', 'Amazon Redshift');

+------------+
| octetindex |
+------------+
|          8 |
+------------+
```

文字列 `Amazon Redshift` のサブ文字列 `Redshift` の位置を返すには、次の例を使用します。この例では、*string* の最初の 6 文字が 2 バイト文字であるため、`21` を返します。

```
SELECT OCTETINDEX('Redshift', 'Άμαζον Amazon Redshift');

+------------+
| octetindex |
+------------+
|         21 |
+------------+
```