

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# LPAD 和 RPAD 函数
<a name="r_LPAD"></a>

这些函数根据指定长度在字符串前面或后面追加字符。

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

```
LPAD(string1, length, [ string2 ])
```

```
RPAD(string1, length, [ string2 ])
```

## 参数
<a name="r_LPAD-arguments"></a>

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

 *length*   
一个用于定义函数结果的长度的整数。字符串的长度基于字符数而不是字节数，这是为了将多字节字符作为单字符计数。如果 *string1* 的长度超过指定长度，它将被截断（在右侧）。如果 *length* 为零或负数，则函数的结果将为空字符串。

 *string2*   
（可选）追加到 *string1* 前面或后面的一个或多个字符。如果未指定此参数，则使用空格。

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

VARCHAR

## 示例
<a name="r_LPAD-examples"></a>

以下示例使用 TICKIT 示例数据库的 EVENT 表中的数据。有关更多信息，请参阅 [示例数据库](c_sampledb.md)。

要将指定的一组事件名称截断到 20 个字符，并在短于此长度的名称前面追加空格，请使用以下示例。

```
SELECT LPAD(eventname, 20) FROM event
WHERE eventid BETWEEN 1 AND 5 ORDER BY 1;

+---------------------+
|         lpad        |
+---------------------+
|              Salome |
|        Il Trovatore |
|       Boris Godunov |
|     Gotterdammerung |
|La Cenerentola (Cind |
+-----------------------+
```

要将相同的一组事件名称截断到 20 个字符，并在短于此长度的名称后面追加 `0123456789`，请使用以下示例。

```
SELECT RPAD(eventname, 20,'0123456789') FROM event
WHERE eventid BETWEEN 1 AND 5 ORDER BY 1;

+----------------------+
|         rpad         |
+----------------------+
| Boris Godunov0123456 |
| Gotterdammerung01234 |
| Il Trovatore01234567 |
| La Cenerentola (Cind |
| Salome01234567890123 |
+----------------------+
```