Загрузка данных


SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER ON;

DECLARE @sql nvarchar(max) =
    OBJECT_DEFINITION(OBJECT_ID(N'dbo.Polina_HouseKey_v2'));

IF @sql IS NULL
    THROW 51630, N'Функция не найдена или недоступно её определение.', 1;

IF CHARINDEX(N'@codePoint', @sql) = 0
    THROW 51631, N'Сначала установите предыдущее исправление с проверкой Unicode.', 1;

-- Допустимые символы проверяются в конце функции по Unicode.
-- Здесь оставляем ограничение длины вместо спорного шаблона LIKE.
SET @sql = REPLACE(
    @sql,
    N'@token COLLATE Latin1_General_100_BIN2 LIKE N''%[^0-9а-яa-z/-]%''',
    N'LEN(@token)>100'
);

SET @sql = REPLACE(
    @sql,
    N'@token COLLATE Latin1_General_100_BIN2 NOT LIKE N''%[^0-9а-яa-z/-]%''',
    N'LEN(@token)<=100'
);

SET @sql = REPLACE(@sql, N'CREATE FUNCTION', N'ALTER FUNCTION');

EXEC sys.sp_executesql @sql;
GO

SELECT
    dbo.Polina_House_v2(N'дом 24-1') AS [ожидается 24-1],
    dbo.Polina_House_v2(N'дом 24/1') AS [ожидается 24/1],
    dbo.Polina_House_v2(N'дом 24?')  AS [ожидается NULL];