MySQL LOCATE() Function
The MySQL LOCATE() function is used to find the position of a substring within a given string.
It takes a string value and a substring as parameters and returns the position of the first occurrence of the specified substring in the original string. If the substring is not found within the original string, it returns 0 as the output.
It is important to note that this function performs a case-insensitive search.
Syntax
Following is the syntax of MySQL LOCATE() function −
LOCATE(substr, str);
Parameters
This function takes a substring and a string to search as a parameter.
Return Value
This function returns the position of the first occurrence of the substring within the string or 0 if not found.
Another Syntax
The function also has a second syntax where, in addition to the string values, it accepts another numerical value as a parameter, known as pos. It returns the position of the first occurrence of the specified substring in the original string, starting from the position pos −
LOCATE(substr,str,pos);
Example
In the following example, we are using the LOCATE() function to find the position of the substring 'how' within the given string −
SELECT LOCATE('how', 'Hello how are you');
Following is the output of the above code −
| LOCATE('how', 'Hello how are you') |
|---|
| 7 |
Example
Following example demonstrates the usage of the second syntax of the LOCATE() function. Here, we specify the pos value as 5, and it returns the position of the substring 'point' starting from the 5th position −
SELECT LOCATE('point', 'Tutorialspoint', 5);
Output of the above code is as shown below −
| LOCATE('point', 'Tutorialspoint', 5) |
|---|
| 10 |
Example
You can also pass numerical values as arguments to the first parameter in the form of a string −
SELECT LOCATE('112', '6522 7262 8972 92 112', 5);
The output obtained is as follows −
| LOCATE('112', '6522 7262 8972 92 112', 5) |
|---|
| 19 |
Example
If the substring provided is not found within the given string, the function returns 0 −
SELECT LOCATE('unknown', 'Tutorialspoint');
The result produced is as follows −
| LOCATE('unknown', 'Tutorialspoint') |
|---|
| 0 |
Example
If any of the arguments passed to this function is NULL, it returns NULL −
SELECT LOCATE(NULL, 'Tutorialspoint');
Following is the output of the above code −
| LOCATE(NULL, 'Tutorialspoint') |
|---|
| NULL |
Example
Let us create a table named "EMP" and insert records into it using CREATE and INSERT statements as shown below −
CREATE TABLE EMP( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, INCOME FLOAT );
Now, let us insert records into it using the INSERT statement −
INSERT INTO EMP VALUES
('Krishna', 'Sharma', 19, 2000),
('Raj', 'Kandukuri', 20, 7000),
('Ramya', 'Ramapriya', 25, 5000),
('Mac', 'Mohan', 26, 2000);
The EMP obtained is as follows −
| FIRST_NAME | LAST_NAME | AGE | INCOME |
|---|---|---|---|
| Krishna | Sharma | 19 | 2000 |
| Raj | Kandukuri | 20 | 7000 |
| Ramya | Ramapriya | 25 | 5000 |
| Mac | Mohan | 26 | 2000 |
Following query searches for 'ma' in the 'LAST_NAME' column of the EMP table −
SELECT FIRST_NAME, LAST_NAME, AGE, LOCATE('ma', LAST_NAME) as result
FROM EMP;
After executing the above code, we get the following output −
| FIRST_NAME | LAST_NAME | AGE | result |
|---|---|---|---|
| Krishna | Sharma | 19 | 5 |
| Raj | Kandukuri | 20 | 0 |
| Ramya | Ramapriya | 25 | 3 |
| Mac | Mohan | 26 | 0 |