Как уже упоминалось в комментариях, обычно нет веской причины для ввода полного предложения: - Вы удаляете абстракцию уровня базы данных (если вам нужно переключить СУБД, вам нужно изменить синтаксис предложения where,при условии, что это другое).- Возможно, вы открываете себя для инъекционных атак.
Понимайте ваши требования лучше и соответствующим образом параметрируйте хранимую процедуру.Например, вам необходимо выполнить следующие запросы:
select * from TABLE where column1 like '%XX%' and column2 like '%YY%'
select * from TABLE where column1 like '%XX%' or column2 like '%YY%'`
передать 3 параметра column1Value
, column2Value
, clauseConnector
Затем использовать условные выражения для выполнения различных запросов:
IF @clauseConnector = 'AND'
BEGIN
select * from TABLE where c1 like '%' + @column1Value + '%' AND c2 like '%' + @column2Value + '%'
END
ELSE
BEGIN
select * from TABLE where c1 like '%' + @column1Value + '%' OR c2 like '%' + @column2Value + '%'
END
Вы также можете использовать динамический sql для построения запроса в одном выражении.
SET @query = 'SELECT * FROM TABLE WHERE ' +
'Column1 like ''%' + column1Value + '%'' '
+ @clauseConnector + ' ' +
IIF (@column2Value IS NOT NULL,'Column2 like ''%' + column2Value + '%'''
EXECUTE(@SQLQuery)