Загрузка...

Поиск по бд

Тема в разделе C# создана пользователем Minin_inactive4471240 12 мар 2022. 214 просмотров

  1. Minin_inactive4471240
    Minin_inactive4471240 Автор темы 12 мар 2022 3 5 сен 2021
    У меня есть параметры, внесённые в переменные, каждый из них может быть пустым вплоть до того, что лишь одна переменная будет заполнена параметром. Как можно реализовать поиск по базе данных только не пустыми переменными, а пустые пропускать?
    Поиск по бд я реализую сам, а вот как сделать так, чтобы пустые переменные не использовались в нём, я не знаю. Не писать же к каждому условию ещё по 11 условий
    [IMG]
     
  2. vtlstolyarov
    vtlstolyarov 13 мар 2022 468 8 янв 2022
    SQL
    WHERE
    (@SertificatNomer IS NULL OR SertificatNomer = @SertificatNomer)
    AND
    (@DateOfRelease IS NULL OR DateOfRelease = @DateOfRelease)
    ...
     
    1. Посмотреть предыдущие комментарии (1)
    2. vtlstolyarov
      Minin_inactive4471240, просто переведи на русский - условие выбора если (параметр @SerificatNomer пустой или поле SertificatNomer равно параметру @SertificatNomer) и (....)

      Смотри, возьмём для простоты одно поле A и один параметр @A - ты хочешь выбрать те строчки из таблицы у которых поле A равно параметру @A, но только в том случае если параметр @A не пустой - если перефразировать это условие в более "программисткий" язык то ты хочешь выбрать строку если параметр @A пустой без всяких доаполнительных проверок то есть одно из условий это "@A IS NOT NULL" теперь остался вопрос что делать если параметр не пустой - тогда его надо сравнить с полем "A = @A" и ты хочешь это строчку если выполниться или первое условие или второе - получится "@A IS NOT NULL OR A = @A"

      теперь усложним - что если поля 2? для второго поля нужно будет точно такое же условие "@B IS NOT NULL OR B = @B" и ты хочешь взять эту строчку только если и та и эта проверка прошла, то есть ты объеденяешь это через "И" - Проверка для A И Проверка для B, получится
      (@A IS NOT NULL OR A = @A) AND (@B IS NOT NULL OR B = @B)
    3. Minin_inactive4471240 Автор темы
      vtlstolyarov, У меня 11 полей, эти условия написать в одном using или как-то разделять? и как реализовать вывод всего этого через Ридер?
    4. vtlstolyarov
      Minin_inactive4471240, это всё про SQL. В using и reader абсолютно ничего не поменяется
    5. Посмотреть следующие комментарии (4)
Top
Загрузка...