MySQL LIKE Operator

The LIKE operator in MySQL is used in a WHERE clause to search for a specified pattern in a column. It is often used for performing partial matches in string data. The LIKE operator is especially helpful when you need to search for values that are similar to a given string, rather than an exact match.

Wildcards Used with LIKE

There are two main wildcards used in conjunction with the LIKE operator:

  1. Percent sign (%): Represents zero, one, or multiple characters.
  2. Underscore (_) : Represents exactly one character.

Both wildcards can be combined to create complex patterns for matching strings in a flexible way.

Syntax of LIKE Operator

The general syntax of the LIKE operator is:

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;
  • column_name: The column where you want to search for the pattern.
  • pattern: The pattern to search for, which can include wildcards (% and _).

You can also combine the LIKE operator with logical operators like AND and OR to form more complex queries.


Examples of LIKE Operator with Wildcards

Here are some examples of how the LIKE operator can be used with % and _ wildcards:


1. Find Values that Start with a Specific Character

WHERE CustomerName LIKE 'a%'
  • Description: This query finds any CustomerName that starts with the letter "a".
  • Example Match: "Alfreds Futterkiste", "Anna"

2. Find Values that End with a Specific Character

WHERE CustomerName LIKE '%a'
  • Description: This query finds any CustomerName that ends with the letter "a".
  • Example Match: "Anna", "Maria"

3. Find Values that Contain a Specific Substring

WHERE CustomerName LIKE '%or%'
  • Description: This query finds any CustomerName that contains the substring "or" at any position.
  • Example Match: "George", "Boris", "Margaret"

4. Find Values with a Specific Character in a Certain Position

WHERE CustomerName LIKE '_r%'
  • Description: This query finds any CustomerName where the second character is "r".
  • Example Match: "George", "Fred"

5. Find Values with a Specific Starting Character and Minimum Length

WHERE CustomerName LIKE 'a_%'
  • Description: This query finds any CustomerName that starts with "a" and is at least two characters in length.
  • Example Match: "Anna", "Alfred"

6. Find Values with a Specific Starting Character and Length of At Least Three Characters

WHERE CustomerName LIKE 'a__%'
  • Description: This query finds any CustomerName that starts with "a" and is at least three characters long.
  • Example Match: "Anna", "Alfred"

7. Find Values that Start and End with Specific Characters

WHERE ContactName LIKE 'a%o'
  • Description: This query finds any ContactName that starts with "a" and ends with "o".
  • Example Match: "Antonio", "Alberto"

Combining LIKE with Other Conditions

You can also combine the LIKE operator with other conditions using logical operators like AND, OR, and NOT to filter the data more precisely.

Example 1: Using AND to Combine Conditions

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%' AND Country = 'Germany';
  • Description: This query finds all customers whose names start with "a" and are located in Germany.

Example 2: Using OR to Combine Conditions

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%' OR City = 'Berlin';
  • Description: This query finds all customers whose names start with "a" or whose city is Berlin.

Conclusion

The LIKE operator in MySQL is a powerful tool for performing pattern-based searches in string data. By using the % and _ wildcards, you can search for substrings, matches at specific positions, or even combinations of patterns. This makes it a versatile operator for filtering and analyzing textual data in your database.

Key Points:

  • % matches any sequence of characters (zero, one, or more).
  • _ matches exactly one character.
  • The LIKE operator can be combined with AND or OR to create more complex queries.
  • The LIKE operator is case-insensitive by default, but this behavior may vary depending on the database collation settings.

Was this article helpful?