Вы забыли добавить кавычки-разделители строк в вашу динамику c SQL string.
Ваш код ( повторяется несколько раз ):
' .... [policy1] like '+@policy+' .... '
Если вы добавите это:
DECLARE @qt VARCHAR(1) = CHAR(39)
Тогда вы можете решить проблему, используя это ( также несколько раз ):
' .... [policy1] like '+@qt+@policy+@qt+' .... '
Обратите внимание, что вместо @qt
вы также можете использовать ''
(две одинарные кавычки) непосредственно в ваших строках, где это необходимо, но, по моему мнению, это часто приводит к трудно читаемому коду.
Также обратите внимание, что если @policy
может сама по себе также содержит одну или несколько кавычек, вам придется избегать тех с REPLACE
следующим образом:
' .... [policy1] like '+@qt + REPLACE(@policy, @qt, @qt+@qt) + @qt+' .... '