Существует много способов добиться этого, хотя самым простым является использование dynamic SQL.
Это связано со стоимостью чтения, экспозицией SQL Injection и кэшированием и оптимизацией запросов.
Что касается того, где вы создаете динамическую строку SQL, вы можете сделать это в хранимой процедуре, если ваша база данных поддерживает те, что было бы моим предпочтением, поскольку вы могли бы передавать параметры и иметь этот бит дополнительной защиты от SQL Инъекции.
Вы также можете создать его в приложении, но это потребует от вас более тщательного изучения данных.
Основной метод будет строить различные части пункта WHERE
для различных поисковых полей (возможно, начиная с WHERE 1 = 1
, так что вы можете просто добавить AND
положения без необходимости проверять каждый пункт, чтобы увидеть, если это первый один).
Я предлагаю прочитать статью dynamic SQL, с которой я связан.
большие, я буду проверять его, ТНХ :) –