FIX: Access violation when the start offset is larger than the string length in Substring function in SQL Server

Applies to: SQL Server 2012 EnterpriseSQL Server 2012 DeveloperSQL Server 2012 Standard More

Symptoms


Assume that you use the Substring (expression, start, length) function in Microsoft SQL Server 2012 Service Pack 1 (SP1) Cumulative Update 1 (CU1) and later versions or SQL Server 2014. When the length of expression is larger than 8000 and start is larger than the length of expression, an access violation occurs. Additionally, you receive the following error:
A severe error occurred on the current command. The results, if any, should be discarded.

Resolution


The issue was first fixed in the following cumulative update of SQL Server.
After the hotfix is applied, a zero-length expression is returned when start is greater than the number of characters in the value expression.

Cumulative Update 1 for SQL Server 2012 SP2

Cumulative Update 2 for SQL Server 2014

Cumulative Update 10 for SQL Server 2012 SP1

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.