MySQL LOCATE() 函数



MySQL 的LOCATE()函数用于查找给定字符串中子字符串的位置。

它以字符串值和子字符串作为参数,并返回指定子字符串在原始字符串中第一次出现的 位置。如果在原始字符串中找不到子字符串,则返回 0。

需要注意的是,此函数执行不区分大小写的搜索。

语法

以下是 MySQL LOCATE() 函数的语法:

LOCATE(substr, str);

参数

此函数以子字符串和要搜索的字符串作为参数。

返回值

此函数返回子字符串在字符串中第一次出现的位置,如果未找到则返回 0。

另一种语法

该函数还具有第二种语法,除了字符串值外,它还接受另一个数值作为参数,称为pos。它返回指定子字符串在原始字符串中第一次出现的位置,从位置pos开始:

LOCATE(substr,str,pos);

示例

在下面的示例中,我们使用 LOCATE() 函数查找给定字符串中子字符串“how”的位置:

SELECT LOCATE('how', 'Hello how are you');

以上代码的输出如下:

LOCATE('how', 'Hello how are you')
7

示例

以下示例演示了 LOCATE() 函数的第二种语法的用法。在这里,我们将 pos 值指定为 5,它返回从第 5 个位置开始的子字符串“point”的位置:

SELECT LOCATE('point', 'Tutorialspoint', 5);

以上代码的输出如下:

LOCATE('point', 'Tutorialspoint', 5)
10

示例

您还可以将数值作为字符串形式的参数传递给第一个参数:

SELECT LOCATE('112', '6522 7262 8972 92 112', 5);

获得的输出如下:

LOCATE('112', '6522 7262 8972 92 112', 5)
19

示例

如果提供的子字符串在给定字符串中找不到,则函数返回 0:

SELECT LOCATE('unknown', 'Tutorialspoint');

产生的结果如下:

LOCATE('unknown', 'Tutorialspoint')
0

示例

如果传递给此函数的任何参数为 NULL,则返回 NULL:

SELECT LOCATE(NULL, 'Tutorialspoint');

以上代码的输出如下:

LOCATE(NULL, 'Tutorialspoint')
NULL

示例

让我们创建一个名为“EMP”的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示:

CREATE TABLE EMP(
   FIRST_NAME  CHAR(20) NOT NULL,
   LAST_NAME  CHAR(20),
   AGE INT,
   INCOME FLOAT
);

现在,让我们使用 INSERT 语句向其中插入记录:

INSERT INTO EMP VALUES 
('Krishna', 'Sharma', 19, 2000),
('Raj', 'Kandukuri', 20, 7000),
('Ramya', 'Ramapriya', 25, 5000),
('Mac', 'Mohan', 26, 2000);

获得的 EMP 表如下所示:

FIRST_NAME LAST_NAME AGE INCOME
Krishna Sharma 19 2000
Raj Kandukuri 20 7000
Ramya Ramapriya 25 5000
Mac Mohan 26 2000

以下查询在 EMP 表的 'LAST_NAME' 列中搜索 'ma':

SELECT FIRST_NAME, LAST_NAME, AGE, LOCATE('ma', LAST_NAME) as result
FROM EMP;

执行以上代码后,我们将获得以下输出:

FIRST_NAME LAST_NAME AGE result
Krishna Sharma 19 5
Raj Kandukuri 20 0
Ramya Ramapriya 25 3
Mac Mohan 26 0
mysql-locate-function.htm
广告