Динамический SQL-запрос с ключевым словом INNER JOIN ON LIKE - PullRequest
2 голосов
/ 06 мая 2019

Я пытаюсь построить динамический запрос SQL.Переменная @NSQL содержит SQL-запрос с ключевым словом <<INNERJOINKEYWORD>> в качестве последнего критерия соединения.

  SET @NSQL = 'SELECT * FROM CLIENT
    <<INNERJOINKEYWORD>>'

SET @NSQL = REPLACE(@NSQL,'<<INNERJOINKEYWORD>>',' INNER JOIN #TempTable ON Client.Name = #TempTable.ClientName')

Это нормально.

Теперь я пытаюсь превратить это в динамический SQLLIKE запрос выглядит следующим образом:

SET @NSQL = REPLACE(@NSQL,'<<INNERJOINKEYWORD>>',' INNER JOIN #TempTable ON Client.Name LIKE ''%#TempTable.ClientName%'')

Когда я делаю SELECT @NSQL, текст '# TempTable.ClientName' является частью запроса, как сделать это динамическим?

1 Ответ

5 голосов
/ 06 мая 2019
SET @NSQL = REPLACE(@NSQL,'<<INNERJOINKEYWORD>>',' INNER JOIN #TempTable ON Client.Name LIKE ''%'' + #TempTable.ClientName + ''%''')

Однако учтите, что при таком подходе вы можете вводить уязвимости SQL-инъекций. Поскольку оно включает имя клиента, шансы невелики, но, тем не менее, было бы хорошо убедиться, что имя клиента не может содержать вредоносные значения, такие как ';DELETE FROM CLIENT;--.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...