Проблема с вашей переменной (@s
), она должна быть объявлена до BEGIN
, а return должен идти после END
:
Итак, правильная версия будет:
CREATE FUNCTION dbo.GetMeterNumber(@s AS VARCHAR(MAX))
RETURNS VARCHAR(MAX) AS
BEGIN
DECLARE @string2 VARCHAR(MAX) = @s
IF @s IS NOT NULL
BEGIN
SET @string2 = REPLACE(REPLACE(LEFT(REVERSE(LEFT(REVERSE(@string2), CHARINDEX('/', REVERSE(@string2)) - 1)),
CHARINDEX('-',
REVERSE(
LEFT(REVERSE(@string2), CHARINDEX('/', REVERSE(@string2)) - 1)))
- 1), 'NUMBER_', ''), '_OF_10', '')
END
RETURN @string2
END
РЕДАКТИРОВАТЬ: Я бы добавил некоторые предупреждения в основной loigc:
REPLACE(REPLACE(LEFT(REVERSE(LEFT(REVERSE(@string2), CHARINDEX('/', REVERSE(@string2 + '/')) - 1)),
CHARINDEX('-',
REVERSE(
LEFT(REVERSE(@string2), CHARINDEX('/', REVERSE(@string2 + '/')) - 1) + '-'))
- 1), 'NUMBER_', ''), '_OF_10', '')