MariaDB LOCATE() 函数使用指南

在 MariaDB 中,LOCATE() 是一个内置的字符串函数,它返回一个子字符串在一个字符串中第一次出现的位置索引。

MariaDB LOCATE() 执行不区分大小写的搜索。 和它功能类似的函数还有: INSTR()POSITION()

MariaDB LOCATE() 语法

这里是 MariaDB LOCATE() 函数的语法:

LOCATE(substr, str[, startPos])

参数

substr
必需的。 在 str 中搜索的子串。
str
必需的。 被搜索的字符串。
startPos
可选的。 在 str 中开始搜索的位置,从 1 开始。

如果您未提供参数或提供了错误数量的参数, MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOCATE'

返回值

MariaDB LOCATE() 函数返回子字符串 substr 在字符串 str 中的位置索引。数字索引从 1 开始。如果在 str 中找不到 substrLOCATE() 函数将返回 0

如果 startPos0LOCATE() 函数将返回 0

如果子字符串参数为一个空串,LOCATE() 函数将返回 1

当任意一个参数为 NULL 时, LOCATE() 函数将返回 NULL

MariaDB LOCATE() 示例

基本示例

下面的语句展示了 MariaDB LOCATE() 函数的基本用法:

SELECT
  LOCATE('l', 'Hello World'),
  LOCATE('l', 'Hello World', 5);

输出:

+----------------------------+-------------------------------+
| LOCATE('l', 'Hello World') | LOCATE('l', 'Hello World', 5) |
+----------------------------+-------------------------------+
|                          3 |                            10 |
+----------------------------+-------------------------------+

在本示例中, LOCATE('l', 'Hello World', 5) 指定了起始搜索的位置是 5,因此它返回了 10。

不区分大小写

MariaDB LOCATE() 函数执行不区分大小写的搜索,下面的语句说了这一点:

SELECT
  LOCATE('He', 'Hello World'),
  LOCATE('he', 'Hello World'),
  LOCATE('HE', 'Hello World')\G

输出:

LOCATE('He', 'Hello World'): 1
LOCATE('he', 'Hello World'): 1
LOCATE('HE', 'Hello World'): 1

空字符串

如果子字符串为一个空串,LOCATE() 函数将返回 1

SELECT LOCATE('', 'Hello World');

输出:

+---------------------------+
| LOCATE('', 'Hello World') |
+---------------------------+
|                         1 |
+---------------------------+

起始位置为 0

如果起始位置为 0,MariaDB LOCATE() 函数将返回 0

SELECT LOCATE('He', 'Hello World', 0);

输出:

+--------------------------------+
| LOCATE('He', 'Hello World', 0) |
+--------------------------------+
|                              0 |
+--------------------------------+

结论

MariaDB LOCATE() 函数返回一个子字符串在一个字符串中第一次出现的位置索引。