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.