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.html