Summary: in this tutorial, you have learned how to use the SQL Server PATINDEX() function to find the position of a pattern in a string.
SQL Server PATINDEX() overview #
The PATINDEX() function returns the position of the first occurrence of a pattern in a string. The syntax of the PATINDEX() function is as follows:
PATINDEX ( '%pattern%' , input_string )
Code language: SQL (Structured Query Language) (sql)The PATINDEX() function accepts two arguments:
patternis a character expression to be found. It can contain wildcard characters such as%and'_'in the pattern. The meanings of the wildcards are the same as they are used with theLIKEoperator.input_stringis a character string in which the pattern to be searched.
The PATINDEX() returns an integer that specifies the position of the first occurrence of the pattern in the input_string, or zero of the pattern not found. The PATINDEX() function will return NULL if either pattern or input_string is NULL.
Note that the PATINDEX() searches for the pattern based on the collation of the input. If you want to use a specific collation, you can use the COLLATE clause explicitly.
SQL Server PATINDEX() function examples #
Let’s take some examples of using the PATINDEX() function.
A) SQL Server PATINDEX() simple example #
This example returns the starting position of the substring 'ern' in the string 'SQL Pattern Index':
SELECT
PATINDEX('%ern%', 'SQL Pattern Index') position;
Code language: SQL (Structured Query Language) (sql)Here is the output:
position
-----------
9
(1 row affected)B) Using SQL Server PATINDEX() with multiple wildcards example #
This example uses % and _ wildcards to find the position at which the pattern 'f', followed by any two characters and 'ction' starts in the 'SQL Server String Function' string:
SELECT
PATINDEX('%f__ction%', 'SQL Server String Function') position;
Code language: SQL (Structured Query Language) (sql)The output is as follows:
Position
-----------
19
(1 row affected)C) Using SQL Server PATINDEX() function with table column example #
This example finds the position of the first occurrence of the pattern 2018 in values of the product_name column in the production.products table from the sample database.
SELECT
product_name,
PATINDEX('%2018%', product_name) position
FROM
production.products
WHERE
product_name LIKE '%2018%'
ORDER BY
product_name;
Code language: SQL (Structured Query Language) (sql)The following picture shows the partial output:

In this tutorial, you have learned how to use the SQL Server PATINDEX() function to find the position of the first occurrence of a pattern in a string.