I don't know anyway off the top of my head to do what you want they way you want. But, here is some code that does it with a REVERSE. Maybe someone else has some ideas...? DECLARE @Table TABLE(String VARCHAR(10))INSERT @TableSELECT 'abcdef'UNION ALL SELECT 'defgheij'UNION ALL SELECT 'wxyz'DECLARE @SearchString VARCHAR(1)SET @SearchString = 'e'SELECT CASE WHEN PATINDEX('%[' + @SearchString + ']%', REVERSE(String)) > 0 THEN LEN(String) - PATINDEX('%['+ @SearchString + ']%', REVERSE(String)) + 1 ELSE 0 END AS LastPositionFROM @TableSELECT CASE WHEN CHARINDEX(@SearchString, REVERSE(String)) > 0 THEN LEN(String) - CHARINDEX(@SearchString, REVERSE(String)) + 1 ELSE 0 END AS LastPositionFROM @Table