In MySQL, the POSITION()
function returns the position of the first occurrence of a substring within the string.
This function is actually a synonym for LOCATE()
, but with a slightly different syntax. The LOCATE()
function also has extra functionality, in that it allows you to define a starting position fro your search.
Syntax
The basic syntax goes like this:
POSITION(substr IN str)
Where substr
is the substring and str
is the string.
Example 1 – Basic Usage
SELECT POSITION('Cat' IN 'The Cat') Result;
Result:
+--------+ | Result | +--------+ | 5 | +--------+
Example 2 – Case Sensitivity
The POSITION()
function is multibyte safe, and is case-sensitive only if at least one argument is a binary string.
So the following example is case-insensitive:
SELECT POSITION('Cat' IN 'The cat') Result;
Result:
+--------+ | Result | +--------+ | 5 | +--------+
Example 3 – No Match
The function returns 0
if the substring isn’t found within the string:
SELECT POSITION('Dog' IN 'The cat') Result;
Result:
+--------+ | Result | +--------+ | 0 | +--------+
Example 4 – Embedded Substrings
Be careful when choosing the substring. If it’s part of another word, you could get a false positive:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
Result:
+--------+ | Result | +--------+ | 6 | +--------+
If you’re only looking for cat, the animal, this would be a false positive.
Example 5 – First Occurrence Only
Remember, this function only returns the position of the first occurrence of the substring. Any subsequent occurrences are ignored:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
Result:
+--------+ | Result | +--------+ | 4 | +--------+
Example 6 – NULL Arguments
If any of the arguments are NULL
, the result is NULL
:
SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
Result:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
As mentioned, you can also use the LOCATE()
function, which allows you define a starting position for your search.