locate:查找子串位置
速查结论
locate(substr, str[, pos]) 是 Spark SQL 中用于在字符串中查找子字符串首次出现位置的函数。
语法
locate(substr, str[, pos])
返回子字符串 substr 在字符串 str 中从位置 pos 开始之后第一次出现的位置。给定的 pos 和返回值都是从1开始计数的。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| substr | STRING | 要查找的子字符串 |
| str | STRING | 被搜索的源字符串 |
| pos | INT | 可选。搜索的起始位置(从 1 开始计数) |
示例
> SELECT locate('bar', 'foobarbar');
4
> SELECT locate('bar', 'foobarbar', 5);
7
> SELECT POSITION('bar' IN 'foobarbar');
4
常见报错与避坑指南
- 索引从 1 开始:locate 返回值基于 1 计数(而非 0),未找到时返回 0。这与
INSTR函数一致,但与某些编程语言(如 Java、Python)的 0 起始索引不同。 - pos 参数从 1 开始:指定 pos 时也遵循 1 起始规则,
locate('bar', 'foobarbar', 1)等价于locate('bar', 'foobarbar')。
Since: 1.5.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
