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
廣告