Как добавить фильтр, если значение существует в запросе SQL Server? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть вопрос относительно добавления / удаления фильтров в запросе SQL 2008.Вот пример одного сценария, в котором я должен использовать серверный язык (в моем случае ColdFusion), чтобы добавить фильтр.

<cfif userdata.appaccess lt 8>
    AND (building_list IN (<cfqueryparam value="#userdata.appBldgList#" cfsqltype="cf_sql_char" maxlength="4" list="yes">))
</cfif>

Как вы можете видеть, у меня есть оператор cfif, который проверяет, является ли доступ пользователя меньше 8, а затем включает фильтр в запрос.Мне интересно, есть ли способ сделать это с языком SQL?Если это так, будет ли это лучшим или более эффективным вариантом / решением?Стандарты кодирования в моем проекте не соответствуют друг другу, и код пишется многими оставленными программистами, и каждый новый программист начинает что-то новое.Я пытаюсь найти лучшее и наиболее эффективное решение для подобных ситуаций.Любые предложения / примеры будут полезны.Спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

Да, просто используйте условие SQL «ИЛИ» вместе с И, как это

   select...
    from...
    where 
    ...some conditions...
    and (#userdata.appaccess# >= 8 OR
    (building_list IN (<cfqueryparam value="#userdata.appBldgList#"    cfsqltype="cf_sql_char" maxlength="4" list="yes">))
    )

Если userdata.appaccess больше или равно 8, тогда SQL будет игнорировать условие значения списка.Вы должны проверить, что userdata.appaccess не содержит код SQL и содержит только числовое значение, прежде чем вы сделаете это, потому что, если пользователь может заменить число кодом SQL, у вас есть проблема с инъекцией SQL.

Если вы нашли этот ответ приемлемым, пожалуйста, укажите.

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