

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 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/)。

# OCTET\$1LENGTH 函数
<a name="r_OCTET_LENGTH"></a>

以字节数形式返回指定字符串的长度。

## 语法
<a name="r_OCTET_LENGTH-synopsis"></a>

```
OCTET_LENGTH(expression)
```

## 参数
<a name="r_OCTET_LENGTH-argument"></a>

 *expression*   
`CHAR` 字符串、`VARCHAR` 字符串、`VARBYTE` 表达式或隐式计算为 `CHAR`、`VARCHAR` 或 `VARBYTE` 类型的表达式。

## 返回类型
<a name="r_OCTET_LENGTH-return-type"></a>

 INTEGER   
OCTET\$1LENGTH 函数返回一个整数，表示输入字符串中的字节数。  
如果输入的是字符串，[LEN](r_LEN.md) 函数将返回多字节字符串中字符的实际数量，而不是字节的数量。例如，存储 3 个 4 字节中文字符需要 `VARCHAR(12)` 列。OCTET\$1LENGTH 函数对于该字符串将返回 `12`，而 LEN 函数将对于该同一个字符串将返回 `3`。

## 使用说明
<a name="r_OCTET_LENGTH_usage_notes"></a>

如果 *expression* 是 `CHAR` 字符串，则此函数返回 `CHAR` 字符串的长度。例如，`CHAR(6)` 输入的输出为 `CHAR(6)`。

如果 *expression* 为 `VARCHAR` 字符串，则计算尾随空格。

## 示例
<a name="r_OCTET_LENGTH-example"></a>

当带有三个尾随空格的字符串 `francais` 强制转换为 `CHAR` 和 `VARCHAR` 类型时，要返回字节数，请使用以下示例。有关更多信息，请参阅[CAST 函数](r_CAST_function.md)。

```
SELECT OCTET_LENGTH(CAST('francais   ' AS CHAR(15))) AS octet_length_char, OCTET_LENGTH(CAST('francais   ' AS VARCHAR(15))) AS octet_length_varchar;

+-------------------+----------------------+
| octet_length_char | octet_length_varchar |
+-------------------+----------------------+
|                15 |                   11 |
+-------------------+----------------------+
```

要返回字符串 `français` 中的字节数和字符数，请使用以下示例。

```
SELECT OCTET_LENGTH('français'), LEN('français');

+--------------+-----+
| octet_length | len |
+--------------+-----+
|            9 |   8 |
+--------------+-----+
```

要在字符串 `français` 强制转换为 `VARBYTE` 时返回字节数，请使用以下示例。

```
SELECT OCTET_LENGTH(CAST('français' AS VARBYTE));

+--------------+
| octet_length |
+--------------+
|            9 |
+--------------+
```