

 从补丁 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/)。

# STRPOS 函数
<a name="r_STRPOS"></a>

返回子字符串在指定字符串中的位置。

有关类似的函数，请参阅[CHARINDEX 函数](r_CHARINDEX.md)和[POSITION 函数](r_POSITION.md)。

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

```
STRPOS(string, substring )
```

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

 *string*   
第一个输入参数是要在其中进行搜索的 `CHAR` 或 `VARCHAR` 字符串。

 *substring*   
第二个参数是要在 *string* 中搜索的子字符串。

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

INTEGER  
STRPOS 函数返回与 *substring* 的位置对应的 `INTEGER`（从 1 开始，而不是从 0 开始）。此位置基于字符数而不是字节数，这是为了将多字节字符作为单字符计数。

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

如果在 *string* 中未找到 *substring*，STRPOS 将返回 `0`。

```
SELECT STRPOS('dogfish', 'fist');

+--------+
| strpos |
+--------+
|      0 |
+--------+
```

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

要显示 `fish` 在 `dogfish` 内的位置，请使用以下示例。

```
SELECT STRPOS('dogfish', 'fish');

+--------+
| strpos |
+--------+
|      4 |
+--------+
```

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

要返回 SALES 表中 COMMISSION 超过 999.00 的销售交易的数量，请使用以下示例。

```
SELECT DISTINCT STRPOS(commission, '.'),
COUNT (STRPOS(commission, '.'))
FROM sales
WHERE STRPOS(commission, '.') > 4
GROUP BY STRPOS(commission, '.')
ORDER BY 1, 2;

+--------+-------+
| strpos | count |
+--------+-------+
|      5 |   629 |
+--------+-------+
```