MySQL POSITION() 函数



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

它以字符串值和子字符串作为参数,并返回指定子字符串在原始字符串中第一次出现的**位置**。

字符串中第一个字符的位置从 1 开始。如果在原始字符串中找不到子字符串,则返回 0 作为输出。它是**不区分大小写**的搜索。

MySQL 的 POSITION()LOCATE() 函数的同义词。

语法

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

POSITION(substring IN string);

参数

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

返回值

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

示例

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

SELECT POSITION('how' IN 'Hello how are you');

以下是上述代码的输出:

POSITION('how' IN 'Hello how are you')
7

示例

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

SELECT POSITION('6522 7262 8972 92 112' IN 5);

获得的输出如下:

POSITION('6522 7262 8972 92 112' IN 5)
0

示例

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

SELECT POSITION('unknown' IN 'Tutorialspoint');

产生的结果如下:

POSITION('unknown' IN 'Tutorialspoint')
0

示例

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

SELECT POSITION(NULL IN 'Tutorialspoint');

以下是上述代码的输出:

POSITION(NULL IN '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, POSITION('ma' IN LAST_NAME) as result
FROM EMP;

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

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