Это немного дорогостоящий подход, но служит цели. Он будет работать, когда функция Length to LEFT задана как Number, но не выполняется, когда Length задается с использованием переменных или некоторых других выражений. Надеюсь это поможет.
DECLARE @Search VARCHAR(10) = '5'
;WITH CTE AS
(
SELECT 1 AS Lvl, o.name, o.type, o.Object_ID
,NULLIF(CHARINDEX('left(',definition),0) AS LeftPos
,CHARINDEX(')', definition, (NULLIF(CHARINDEX('left(',definition),0))) AS LastIndex
,LTRIM(RTRIM(SUBSTRING(definition, CHARINDEX(',', definition, (NULLIF(CHARINDEX('left(',definition),0))) + 1, CHARINDEX(')', definition, (NULLIF(CHARINDEX('left(',definition),0))) - CHARINDEX(',', definition, (NULLIF(CHARINDEX('left(',definition),0))) -1))) AS LeftLen
FROM sys.all_sql_modules m
INNER JOIN sys.objects o on o.Object_ID = m.Object_ID
WHERE CHARINDEX(')', definition, (NULLIF(CHARINDEX('left(',definition),0))) - CHARINDEX(',', definition, (NULLIF(CHARINDEX('left(',definition),0))) -1 > 0
UNION ALL -- get all occurunces or Left
SELECT 2 AS Lvl, o.name, o.type, o.Object_ID
,NULLIF(CHARINDEX('left(',definition,LastIndex),0) AS LeftPos
,CHARINDEX(')', definition, (NULLIF(CHARINDEX('left(',definition,LastIndex),0))) AS LastIndex
,LTRIM(RTRIM(SUBSTRING(definition, CHARINDEX(',', definition, (NULLIF(CHARINDEX('left(',definition,LastIndex),0))) + 1, CHARINDEX(')', definition, (NULLIF(CHARINDEX('left(',definition,LastIndex),0))) - CHARINDEX(',', definition, (NULLIF(CHARINDEX('left(',definition,LastIndex),0))) -1))) AS LeftLen
FROM sys.all_sql_modules m
INNER JOIN sys.objects o ON o.Object_ID = m.Object_ID
INNER JOIN CTE c ON c.Object_ID = m.Object_ID
AND c.LastIndex IS NOT NULL AND ISNULL(c.LeftLen,@Search) <> @Search
WHERE CHARINDEX(')', definition, (NULLIF(CHARINDEX('left(',definition,LastIndex),0))) - CHARINDEX(',', definition, (NULLIF(CHARINDEX('left(',definition,LastIndex),0))) -1 > 0
)
SELECT * FROM CTE
WHERE LeftLen = @Search
OPTION (MAXRECURSION 10000);
Как насчет 'LEFT (xxx, 5)' с пробелом?Также это будет соответствовать «LEFT (x, 100), SOMEFUNC (5)» – DavidG