Curriculum
in this tutorial, you will learn how to use the SQL Server LIKE
 to check whether a character string matches a specified pattern.
LIKE
 operator overviewThe SQL Server LIKE
 is a logical operator that determines if a character string matches a specified pattern. A pattern may include regular characters and wildcard characters. The LIKE
 operator is used in the WHERE clause of theÂ
SELECT,Â
UPDATE, andÂ
DELETE statements to filter rows based on pattern matching.
The following illustrates the syntax of the SQL Server LIKE
 operator:
column | expression LIKE pattern [ESCAPE escape_character]
The pattern is a sequence of characters to search for in the column or expression. It can include the following valid wildcard characters:
The wildcard characters makes the LIKE
 operator more flexible than the equal (=) and not equal (!=) string comparison operators.
The escape character instructs the LIKE
 operator to treat the wildcard characters as the regular characters. The escape character has no default value and must be evaluated to only one character.
The LIKE
 operator returns TRUE
 if the column or expression matches the specified pattern.
To negate the result of the LIKE
 operator, you use the NOT
 operator as follows:
column | expression NOT LIKE pattern [ESCAPE escape_character]
LIKE
 examplesThe following example finds the customers whose last name starts with the letter z
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE 'z%' ORDER BY first_name;
The following example returns the customers whose last name ends with the string er
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '%er' ORDER BY first_name;
The following statement retrieves the customers whose last name starts with the letter t
 and ends with the letter s
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE 't%s' ORDER BY first_name;
The underscore represents a single character. For example, the following statement returns the customers where the second character is the letter u
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '_u%' ORDER BY first_name;
The pattern _u%
_
) matches any single character.u
 matches the letter u exactly%
 matches any sequence of charactersThe square brackets with a list of characters e.g., [ABC]
 represents a single character that must be one of the characters specified in the list.
For example, the following query returns the customers where the first character in the last name is Y
 or Z
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '[YZ]%' ORDER BY last_name;
The square brackets with a character range e.g., [A-C]
 represent a single character that must be within a specified range.
For example, the following query finds the customers where the first character in the last name is the letter in the range A
 through C
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '[A-C]%' ORDER BY first_name;
The square brackets with a caret sign (^) followed by a range e.g., [^A-C]
 or character list e.g., [ABC]
 represent a single character that is not in the specified range or character list.
For example, the following query returns the customers where the first character in the last name is not the letter in the range A
 through X
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '[^A-X]%' ORDER BY last_name;
NOT LIKE
 operator exampleThe following example uses the NOT LIKE
 operator to find customers where the first character in the first name is not the letter A
:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE first_name NOT LIKE 'A%' ORDER BY first_name;
LIKE
 with ESCAPE
 exampleFirst, create a new table for the demonstration:
CREATE TABLE sales.feedbacks ( feedback_id INT IDENTITY(1, 1) PRIMARY KEY, comment VARCHAR(255) NOT NULL );
Second, insert some rows into the sales.feedbacks
 table:
INSERT INTO sales.feedbacks(comment) VALUES('Can you give me 30% discount?'), ('May I get me 30USD off?'), ('Is this having 20% discount today?');
Third, query data from the sales.feedbacks
 table:
SELECT * FROM sales.feedbacks;
If you want to search for 30%
 in the comment
 column, you may come up with a query like this:
SELECT feedback_id, comment FROM sales.feedbacks WHERE comment LIKE '%30%';
The query returns the comments that contain 30% and 30USD, which is not what we expected.
To solve this issue, you need to use the ESCAPE
 clause:
SELECT feedback_id, comment FROM sales.feedbacks WHERE comment LIKE '%30!%%' ESCAPE '!';
In this query, the  ESCAPE
 clause specified that the character !
 is the escape character. It instructs the LIKE
 operator to treat the %
 character as a literal string instead of a wildcard. Note that without the ESCAPE
 clause, the query would return an empty result set.