LOCATE
Returns the first position of the given search string.
Syntax
LOCATE (needle, haystack) LOCATE (needle, haystack, startpos)
Arguments
needle: string to search for
haystack: any string or binary object
startpos: character position to start searching at
Note
This function is identical to INSTR but with the arguments reversed.
Return Type
Integer position, one-indexed. 0 if not found.
Examples
SELECT LOCATE('i', 'ohai'); **** +---------------------+ | LOCATE('i', 'ohai') | +---------------------+ | 4 | +---------------------+
SELECT LOCATE('z', 'ohai'); **** +---------------------+ | LOCATE('z', 'ohai') | +---------------------+ | 0 | +---------------------+
SELECT LOCATE('i', 'ohaiohai', 6); **** +----------------------------+ | LOCATE('i', 'ohaiohai', 6) | +----------------------------+ | 8 | +----------------------------+
Implicit Collation
When character_set_server
is set to utf8
, string literals with characters using 4-byte encoding are implicitly assigned binary collation and processed as a sequence of bytes rather than characters. This implicit conversion to binary collation causes string functions to return unexpected results. To avoid using implicit binary collation, either use explicit type casting or use database columns defined with the utf8mb4
character set.
For more information, refer to Implicit Collation in Special Cases.