SQL Server SUBSTRING Function

Summary: in this tutorial, you will learn how to use the SQL Server SUBSTRING() function to extract a substring from a string.

SQL Server SUBSTRING() function overview #

The SUBSTRING() extracts a substring with a specified length starting from a location in an input string.

The following shows the syntax of the SUBSTRING() function:

SUBSTRING(input_string, start, length);
Code language: SQL (Structured Query Language) (sql)

In this syntax:

  • input_string can be a character, binary, text, ntext, or image expression.
  • start is an integer that specifies the location where the returned substring starts. Note that the first character in the input_string is 1, not zero.
  • length is a positive integer that specifies the number of characters of the substring to be returned. The SUBSTRING() function raises an error if the length is negative. If start + length > the length of input_string, the substring will begin at the start and include the remaining characters of the input_string.

SQL Server SUBSTRING() examples #

Let’s take some examples of using the SUBSTRING() function to understand how it works.

A) Using SUBSTRING() function with literal strings #

This example extracts a substring with the length of 6, starting from the fifth character, in the 'SQL Server SUBSTRING' string.

SELECT 
    SUBSTRING('SQL Server SUBSTRING', 5, 6) result;
Code language: SQL (Structured Query Language) (sql)

Here is the output:

result
------
Server

(1 row affected)

B) Using  SUBSTRING() function with table columns #

We will use the sales.customers table in the sample database for the demonstration.

customers

This example uses the SUBSTRING() function to extract domain from email addresses of customers:

SELECT 
    email, 
    SUBSTRING(
        email, 
        CHARINDEX('@', email)+1, 
        LEN(email)-CHARINDEX('@', email)
    ) domain
FROM 
    sales.customers
ORDER BY 
    email;
Code language: SQL (Structured Query Language) (sql)

The following picture shows the partial output:

SQL Server SUBSTRING with table column example

How it works.

First, we used the CHARINDEX() function to search for the ‘@’ character in the email. The domain will start from the @ character plus one.

Then, we used the result of the CHARINDEX() function to determine:

  • The starting location of the domain: CHARINDEX('@', email) + 1
  • The length of the domain: LEN(email)-CHARINDEX('@', email)

To count the number of emails per domain, you can use the following query:

SELECT 
    SUBSTRING(
        email, 
        CHARINDEX('@', email)+1, 
        LEN(email)-CHARINDEX('@', email)
    ) domain,
    COUNT(email) domain_count
FROM 
    sales.customers
GROUP BY
    SUBSTRING(
            email, 
            CHARINDEX('@', email)+1, 
            LEN(email)-CHARINDEX('@', email)
        );
Code language: SQL (Structured Query Language) (sql)

Here is the output:

SQL Server SUBSTRING with GROUP BY example

In this tutorial, you have learned how to used the SQL Server SUBSTRING() function to extract characters from a string.

Was this tutorial helpful?