MySQL | LOCATE method
Start your free 7-days trial now!
MySQL's LOCATE(~)
method returns the position of the first occurrence of a substring in str
starting from the specified position pos
.
Parameters
1. substr
| string
The substring we are trying to find in str
.
2. str
| string
The input string we are trying to locate the substring in.
3. pos
| number
| optional
The starting position for the search. Defaults to 1
.
Return value
The return value depends on the following cases:
Case | Return value |
---|---|
If the | Position of first occurrence of |
If the | 0 |
Examples
Consider the following table about some students:
student_id | fname | lname | day_enrolled | age | username |
---|---|---|---|---|---|
1 | Sky | Towner | 2015-12-03 | 17 | stowner1 |
2 | Ben | Davis | 2016-04-20 | 19 | bdavis2 |
3 | Travis | Apple | 2018-08-14 | 18 | tapple3 |
4 | Arthur | David | 2016-04-01 | 16 | adavid4 |
5 | Benjamin | Town | 2014-01-01 | 17 | btown5 |
The above sample table can be created using the code here.
Basic usage
To find the position of the first occurrence of 'd'
in usernames:
SELECT username, LOCATE('d', username) AS 'Position of d'FROM students;
+----------+---------------+| username | Position of d |+----------+---------------+| stowner1 | 0 || bdavis2 | 2 || tapple3 | 0 || adavid4 | 2 || btown5 | 0 |+----------+---------------+
Note that counting of position starts at 1 in MySQL unlike some other programming languages that start at 0.
Position parameter
To find position of first occurrence of 'd'
in usernames from position 3
:
SELECT username, LOCATE('d', username, 3) AS 'Position of d'FROM students;
+----------+---------------+| username | Position of d |+----------+---------------+| stowner1 | 0 || bdavis2 | 0 || tapple3 | 0 || adavid4 | 6 || btown5 | 0 |+----------+---------------+
Note that the username bdavis2 returns 0 as the 'd'
occurs before position 3.
Case sensitivity
The search is NOT case-sensitive:
SELECT username, LOCATE('D', username, 3) AS 'Position of D'FROM students;
+----------+---------------+| username | Position of D |+----------+---------------+| stowner1 | 0 || bdavis2 | 0 || tapple3 | 0 || adavid4 | 6 || btown5 | 0 |+----------+---------------+
Even when using 'D'
(capital letter) as our substring, we still find a match in username adavid4
.