In SQL Server 2022, an enhancement came in TRIM() function which was a long awaited functionality. This enhancement helps us in removing first or last character from the string. I have written an article about it in detail.
Recently, I was using TRIM() function and came across an error as mentioned below.
Error:
Invalid length parameter passed to the trim function.
Sample:
USE tempdb GO CREATE TABLE #Employees ( EmployeeID INT IDENTITY(1,1), EmployeeName VARCHAR(250), EmailAddress VARCHAR(MAX) ); GO INSERT INTO #Employees VALUES ('Alex','alex114@gmail.com;') , ('Sarina','sarina152@gmail.com;') , ('Sophia','sophiaa123@gmail.com;'); GO SELECT * FROM #Employees; GO

Example:
In the given below example, I have written a simple script using TRIM() function and I declared separator as variable and kept its data type & length as VARCHAR(MAX). This script generates an error as shown below.
DECLARE @separator VARCHAR(MAX); SET @separator = ';'; SELECT EmployeeID , EmployeeName , EmailAddress , TRIM(@separator FROM EmailAddress) AS EmailAfterTrim FROM #Employees; GO

Solution:
The solution to this problem is that while declaring datatype and length of a separator variable, we should never use MAX as its length since it does not support. We should always give length in numbers as shown below.
DECLARE @separator VARCHAR(1); SET @separator = ';'; SELECT EmployeeID , EmployeeName , EmailAddress , TRIM(@separator FROM EmailAddress) AS EmailAfterTrim FROM #Employees; GO

Conclusion:
Whenever you use TRIM() function by using a separator variable, you should always define the length of the variable. Please don’t use MAX as a length in order to avoid such error.
Leave a Reply