0 ratings0% found this document useful (0 votes) 49 views10 pagesLike SQL Server
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
07/01/2028 15:56 LIKE (Transact-SQL) - SOL Server | Microsoft Learn
LIKE (Transact-SQL)
Article + 12/30/2022 + 10 minutes to read
Applies to: @ SQL Server (all supported versions) @ Azure SQL Database @ Azure
SQL Managed Instance @ Azure Synapse Analytics © Analytics Platform System
(Pow)
Determines whether a specific character string matches a specified pattern. A pattern
can include regular characters and wildcard characters. During pattern matching,
regular characters must exactly match the characters specified in the character string.
However, wildcard characters can be matched with arbitrary fragments of the character
string. Using wildcard characters makes the LIKE operator more flexible than using the =
and
string comparison operators. If any one of the arguments isn't of character string
data type, the SQL Server Database Engine converts it to character string data type, if
it's possible.
B Transact-SQL syntax conventions
Syntax
syntassl
-- Syntax for SQL Server and Azure SQL Database
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
syntaxsql
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
match_expression [ NOT ] LIKE pattern
© Note
Currently ESCAPE and STRING_ESCAPE are not supported in
[INCLUDEssazuresynapse-md(././includes/ssazuresynapse-md.md)] or Analytics
Platform System (PDW).
O Note
hitps:ltear.microsoft.comer-usisqlt-sqltanguage-elementsiike-transact-sql?view=sqi-serverver16 ano07/01/2028 15:56 LIKE (Transact-SQL) - SOL Server | Microsoft Learn
To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions
documentation.
Arguments
match_expression
Is any valid expression of character data type.
pattern
Is the specific string of characters to search for in match expression, and can include the
following valid wildcard characters. pattern can be a maximum of 8,000 bytes.
Wildcard Description Example
character
% Any string of WHERE title LIKE ‘%ecomputer%’ finds all book titles with the
zero or more word ‘computer’ anywhere in the book title.
characters
- Any single WHERE au_fname LIKE ‘ean finds all four-letter first names that,
(underscore) character. end with ean (Dean, Sean, and so on)
[ Any single WHERE au_Iname LIKE '[C-Plarsen’ finds author last names
character ending with arsen and starting with any single character
within the between C and P, for example Carsen, Larsen, Karsen, and so on.
specified range In range searches, the characters included in the range may vary
((a-f)) orset_ depending on the sorting rules of the collation.
({abcdef).
i" Any single WHERE au_Iname LIKE 'de[I]96' finds all author last names
character not starting with de and where the following letter isn’t |
within the
specified range
(arf) or set
(abedef)
escape_character
Isa character put in front of a wildcard character to indicate that the wildcard is
interpreted as a regular character and not as a wildcard. escape_character is a character
expression that has no default and must evaluate to only one character.
Result Types
Boolean
hitps:ltear.microsoft.comer-usisqlt-sqvtanguage-elementsiike-transact-sql?view=sq)-serverver16 20rman 1886 LE (Tranaac.1)- SOL Saver Mizost Leas
Result Value
LIKE returns TRUE if the match_expression matches the specified pattern.
Remarks
When you do string comparisons by using LIKE, all characters in the pattern string are
significant. Significant characters include any leading or trailing spaces. If a comparison
ina query is to retum all rows with a string LIKE ‘abc ' (abc followed by a single space), a
row in which the value of that column is abc (abc without a space) isn't returned.
However, trailing blanks, in the expression to which the pattern is matched, are ignored.
If comparison in a query is to return all rows with the string LIKE ‘abc’ (abc without a
space), all rows that start with abc and have zero or more trailing blanks are returned,
A string comparison using a pattern that contains char and varchar data may not pass a
LIKE comparison because of how the data is stored for each data type. The following
example passes a local char variable to a stored procedure and then uses pattern
matching to find all employees whose last names start with the specified set of
characters.
sau
+ Uses AdventureWorks
CREATE PROCEDURE FindEmployee @EmpLName CHAR(2@)
AS
SELECT @EmpLName = RTRIM(@EmpLName) +
SELECT p.FirstName, p.LastName, a.City
FROM Person.Person p JOIN Person.Address 2 ON p.BusinesstntityID =
a.AddressID
WHERE p.LastName LIKE @EmpLName;
60
EXEC FindEmployee @EmpLNane = ‘Barb’;
60
In the Findemployee procedure, no rows are returned because the char variable
(@empLNane) contains trailing blanks whenever the name contains fewer than 20
characters. Because the LastNane column is varchar, there are no trailing blanks. This
procedure fails because the trailing blanks are significant.
However, the following example succeeds because trailing blanks aren't added to a
varchar variable.
sau
hitps:itear.microsoft.comer-usisqlt-sqitanguage-elementsiike-transact-sql?view=sqi-serverver16 sito07/01/2028 15:56 LIKE (Transact-SQL) - SOL Server | Microsoft Learn
-- Uses AdventureWorks
CREATE PROCEDURE FindEmployee @EmpLName VARCHAR(20)
aS.
SELECT @EmpLName = RTRIM(@EmpLName) +
SELECT p.FirstName, p.LastName, a.City
FROM Person.Person p JOIN Person.Address a ON p.BusinessEntityID =
a.AddressID
WHERE p.LastName LIKE @EmpLName;
60
EXEC FindEmployee @EmpLName = ‘Barb’;
Here is the result set.
FirstName LastName city
Angela Barbariol Snohomish
David Barber Snohomish
(2 row(s) affected)
Pattern Matching by Using LIKE
LIKE supports ASCII pattern matching and Unicode pattern matching. When all
arguments (match_expression, pattern, and escape_character, if present) are ASCII
character data types, ASCII pattern matching is performed. If any one of the arguments
are of Unicode data type, all arguments are converted to Unicode and Unicode pattern
matching is performed. When you use Unicode data (nchar or nvarchar data types) with
LIKE, trailing blanks are significant; however, for non-Unicode data, trailing blanks aren't
significant. Unicode LIKE is compatible with the ISO standard. ASCII LIKE is compatible
with earlier versions of SQL Server.
The following is a series of examples that show the differences in rows returned
between ASCII and Unicode LIKE pattern matching.
sat
-+ ASCII pattern matching with char column
CREATE TABLE t (cold CHAR(3@));
INSERT INTO t VALUES (‘Robert King’);
SELECT *
FROM t
WHERE coll LIKE '% King’; -- returns 1 row
-- Unicode pattern matching with nchar column
CREATE TABLE t (cold NCHAR(3@))5
hitps:itear.microsoft.comer-usisqlt-sqitanguage-elementsiike-transact-sql?view=sqi-serverver16 4no07/01/2028 15:56 LIKE (Transact-SQL) - SOL Server | Microsoft Learn
INSERT INTO t VALUES (‘Robert King");
SELECT *
FROM t
WHERE coli LIKE '% King’; -- no rows returned
-+ Unicode pattern matching with nchar column and RTRIM
CREATE TABLE t (cold NCHAR(3@));
INSERT INTO t VALUES (‘Robert King’);
SELECT *
FROM t
WHERE RTRIM(col1) LIKE '% King’; -- returns 1 row
© Note
LIKE comparisons are affected by collation. For more information, see COLLATE
(Transact-SQL).
Using the % Wildcard Character
If the LIKE '5%' symbol is specified, the Database Engine searches for the number §
followed by any string of zero or more characters.
For example, the following query shows all dynamic management views in the
AdventureWiorks2e19 database, because they all start with the letters én
sat
= Uses AdventureWorks
SELECT Name
FROM sys.systen_views
WHERE Name LIKE ‘dn
Go
To see all objects that aren't dynamic management views, use NOT LIKE ‘dnk'. If you
have a total of 32 objects and LIKE finds 13 names that match the pattern, NOT LIKE
finds the 19 objects that don't match the LIKE pattern.
You may not always find the same names with a pattern such as LIKE '[é][*n]%"
Instead of 19 names, you may find only 14, with all the names that start with @ or have
m as the second letter eliminated from the results, and the dynamic management view
names. This behavior is because match strings with negative wildcard characters are
evaluated in steps, one wildcard at a time. If the match fails at any point in the
evaluation, it's eliminated.
hitps:ltear.microsoft.comer-usisqlt-sqvtanguage-elementsiike-transact-sql?view=sq)-serverver16 5110enzo 1586 LE (rensaS0L)- SOL Server Most Learn
Using Wildcard Characters As Literals
You can use the wildcard pattern matching characters as literal characters. To use a
wildcard character as a literal character, enclose the wildcard character in brackets. The
following table shows several examples of using the LIKE keyword and the [] wildcard
characters.
symbol Meaning
LIKE "S[%6)" 5%
LIKE *LJn’ ”
LIKE "(a-cafy a.b.¢d.ort
LIKE "[-acdf -.a,6d,orf
UKE ‘TT i
LIKE") 1
LIKE ‘abel 14%" abe_d and abc_de
LIKE ‘abeldef} abed, abce, and abet
Pattern Matching with the ESCAPE Clause
You can search for character strings that include one or more of the special wildcard
characters. For example, the discounts table in a customers database may store
discount values that include a percent sign (%). To search for the percent sign as a
character instead of as a wildcard character, the ESCAPE keyword and escape character
must be provided. For example, a sample database contains a column named comment
that contains the text 30%. To search for any rows that contain the string 30% anywhere
in the comment column, specify a WHERE clause such as WHERE conment LIKE '%301%X"
EScAPE *!". If ESCAPE and the escape character aren't specified, the Database Engine
returns any rows with the string 30!
if there is no character after an escape character in the LIKE pattern, the pattem isn’t
valid and the LIKE returns FALSE. If the character after an escape character isn't a
wildcard character, the escape character is discarded and the following character is
treated as a regular character in the pattern. These characters include the percent sign
(%), underscore (), and left bracket ({) wildcard characters when they are enclosed in
double brackets ({]). Escape characters can be used within the double bracket
characters ((1), including to escape a caret (4), hyphen (-), or right bracket ()
hitps:ltear.microsoft.comer-usisqlt-sqvtanguage-elementsiike-transact-sql?view=sq)-serverver16 sr1007/01/2028 15:56 LIKE (Transact-SQL) - SOL Server | Microsoft Learn
0x0000 (char(0)) is an undefined character in Windows collations and can't be included
in LIKE,
Examples
A. Using LIKE with the % wildcard character
The following example finds all telephone numbers that have area code 415 in the
PersonPhone table,
sat
-- Uses AdventureWorks
SELECT p.FirstName, p.LastName, ph.PhoneNumber
FROM Person.PersonPhone AS ph
INNER JOIN Person.Person AS p
ON ph.Businessntity1D = p.BusinessEntity1D
WHERE ph.PhoneNumber LIKE '415%"
ORDER by p.LastName;
Go
Here is the result set.
FirstName LastName Phone
Ruben Alonso 415-555-124
Shelby Cook 415-555-0121
Karen Hu 415-555-0114
John Long 415-555-0147
David Long 415-555-0123
Gilbert Ma 415-555-0138
Meredith Moreno 415-555-0131
Alexandra Nelson 415-555-0174
Taylor Patterson 415-555-0178
Gabrielle Russell. 415-555-0197
Dalton Simmons 415-555-0115
(21 row(s) affected)
B. Using NOT LIKE with the % wildcard character
The following example finds all telephone numbers in the PersonPhone table that have
area codes other than 415
hitps:itear.microsoft.comfer-usisqlt-sqitanguage-elementsiike-transact-sql?view=sqi-serverver16 m007/01/2028 15:56 LIKE (Transact-SQL) - SOL Server | Microsoft Learn
sau
-- Uses AdventureWorks
SELECT p.FirstName, p.LastName, ph.PhoneNumber
FROM Person.PersonPhone AS ph
INNER JOIN Person.Person AS p
ON ph.Business€ntityID = p.BusinessEntityID
WHERE ph.PhoneNumber NOT LIKE '415%" AND p.FirstName = ‘Gail*
ORDER BY p. LastName;
Go
Here is the result set.
FirstName LastName Phone
Gail Alexander 1 (11) 500 555-0126
Gail Butler 1 (11) 500 555-0191.
Gail Erickson 834-555-0132
Gail Erickson 849-555-0139
Gail Griffin 450-555-0171
Gail Moore 155-555-0169
Gail Russell. 334-555-0170
Gail Westover 305-555-0100
(8 row(s) affected)
C. Using the ESCAPE clause
The following example uses the Escape clause and the escape character to find the
exact character string 1@-15% in column c1 of the mytb12 table.
sau
USE tempdbs
co
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA. TABLES.
WHERE TABLE_NAME = ‘mytbl2")
DROP TABLE mytb12;
60
USE tempdb;
60
CREATE TABLE mytbl2
(
cl sysname
3
60
INSERT mytbl2 VALUES (‘Discount is 10-15% off"), (‘Discount is .10-.15
hitps:itear.microsoft.comer-usisqlt-sqitanguage-elementsiike-transact-sql?view=sqi-serverver16 arto0710172023 15:56, LUKE (Transact-SOL)- SOL Server| Microsoft Learn
off");
60
SELECT cl
FROM mytb12
WHERE c1 LIKE '%10-251% oFF%" ESCAPE
0
D. Using the [] wildcard characters
The following example finds employees on the Person table with the first name of
Cheryl or Sheryl
sau
~ Uses Adventureworks
SELECT BusinessEntitylD, FirstName, LastName
FROM Person.Person
WHERE FirstName LIKE '[CS]heryl";
Go
The following example finds the rows for employees in the Person table with last names
of zheng or Zhang
sat
-- Uses AdventureWorks
SELECT LastName, FirstName
FROM Person.Person
WHERE LastName LIKE 'Zh[ae]ng’
ORDER BY LastName ASC, FirstName ASC;
Go
Examples: Azure Synapse Analytics and
Analytics Platform System (PDW)
E. Using LIKE with the % wildcard character
The following example finds all employees in the Dinenployee table with telephone
numbers that start with 612
sau
hitps:itear.microsoft.comer-usisqlt-sqitanguage-elementsiike-transact-sql?view=sqi-serverver16 arto07/01/2028 15:56
- Uses Adventureworks
SELECT FirstName, LastName, Phone
FROM DimEmployee
WHERE phone LIKE ‘612%"
ORDER by LastName;
LIKE (Transact-SQL) - SOL Server | Microsoft Learn
F. Using NOT LIKE with the % wildcard character
The following example finds all telephone numbers in the Dinénployee table that don't
start with 612. .
sau
-- Uses AdventureWorks
SELECT FirstName, LastName, Phone
FROM DimEmployee
WHERE phone NOT LIKE '612%'
ORDER by LastName;
G. Using LIKE with the _ wildcard character
The following example finds all telephone numbers that have an area code starting with
6 and ending in 2 in the Dinenployee table. The % wildcard character is included at the
end of the search pattern to match all following characters in the phone column value
sau
-- Uses AdventureWorks
SELECT FirstName, LastName, Phone
FROM DimEmployee
WHERE phone LIKE "6 2%"
ORDER by LastName;
See Also
PATINDEX (Transact-SQL)
Expressions (Transact-SQL)
Built-in Functions (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
hitps:ltear.microsoft.comer-usisqlt-sqvtanguage-elementsiike-transact-sql?view=sq)-serverver16
0110