MySQL LIKE Operator
The LIKE operator in MySQL is used in a WHERE clause to search for a specific pattern in a column. It is helpful when the exact value is unknown but a partial match is sufficient — such as finding all names that start with "A" or all emails ending with "@gmail.com".
Wildcard Characters
LIKE uses two special wildcard characters:
| Wildcard | Meaning | Example |
|---|---|---|
| % | Matches zero or more characters | 'A%' matches Arjun, Anita, Amit |
| _ | Matches exactly one character | 'R_j' matches Raj, Roj, but not Raju |
Syntax
SELECT column_name
FROM table_name
WHERE column_name LIKE pattern;Sample Table
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(100),
email VARCHAR(100),
city VARCHAR(50)
);
INSERT INTO employees VALUES (1, 'Arjun Mehta', 'arjun@gmail.com', 'Delhi');
INSERT INTO employees VALUES (2, 'Anita Roy', 'anita@yahoo.com', 'Mumbai');
INSERT INTO employees VALUES (3, 'Raj Kumar', 'raj@gmail.com', 'Delhi');
INSERT INTO employees VALUES (4, 'Sunita Das', 'sunita@outlook.com', 'Chennai');
INSERT INTO employees VALUES (5, 'Amit Sharma', 'amit@gmail.com', 'Kolkata');Pattern Examples
Starts with a Letter
SELECT emp_name FROM employees WHERE emp_name LIKE 'A%';Returns: Arjun Mehta, Anita Roy, Amit Sharma
Ends with a Pattern
SELECT emp_name, email FROM employees WHERE email LIKE '%@gmail.com';Returns all Gmail users: arjun@gmail.com, raj@gmail.com, amit@gmail.com
Contains a Word Anywhere
SELECT emp_name FROM employees WHERE emp_name LIKE '%Kumar%';Returns: Raj Kumar
Exactly One Character Wildcard
SELECT emp_name FROM employees WHERE emp_name LIKE 'Ra_ Kumar';Returns: Raj Kumar (matches "Ra" + exactly one character + " Kumar")
Fixed Length Pattern
SELECT emp_name FROM employees WHERE city LIKE '_elhi';Returns: Delhi (one character before "elhi")
NOT LIKE
NOT LIKE returns rows that do not match the pattern.
SELECT emp_name, email FROM employees WHERE email NOT LIKE '%@gmail.com';Returns employees whose email is not from Gmail.
LIKE with Escape Character
To search for a literal % or _ character in the data, use an escape character.
SELECT * FROM products WHERE product_name LIKE '50\%';This searches for a product literally named "50%". The backslash escapes the % so it is not treated as a wildcard.
LIKE vs = Operator
| Operator | Use Case |
|---|---|
| = | Exact match — finds only rows with the exact value |
| LIKE | Pattern match — finds rows that match a partial or flexible pattern |
Key Points
LIKEsearches for a pattern rather than an exact value.%matches any number of characters (including zero)._matches exactly one character.NOT LIKEreturns rows that do not match the pattern.- Use a backslash
\to treat%or_as literal characters in a search pattern.
