2016-01-19 3 views
-1

Я делаю поиск с 4-х параметров без каких-либо обязательных полей параметры являютсяПоиск с несколькими параметрами с динамическими значениями

  1. Город
  2. Семейное положение
  3. Пол
  4. Группы

В соответствии с выбором Я получаю SQL-запросы, подобные этому

select * from UserTable 
where Gender='Male' AND City='' AND MaritalStatus='Single' AND Groups ='' 

Он возвращает 0 строк по параметрам City='' И Groups ='' не соответствует критериям.

Есть ли способ достичь этого, не проверяя null в нескольких комбинациях. Я использую MSSQL2012 в качестве базы данных и Asp.Net C#.

Мой метод заключается в следующем

private void GetSearchResults(string city, string MaritalStatus, string Gender, string Groups) 
{ 
    var qry="select * from UserTable 
    where Gender='"+Gender+"' AND City='"+city+"' AND MaritalStatus='"+MaritalStatus+"' AND Groups ='"+Groups+"'"; 
} 

насчет моей отборочной группе = «» означает, что я не хочу фильтрации на группы

+0

Я думаю, что некоторые примеры данных помогут в ответе на этот и некоторые ожидаемые результаты. Это не на 100% понятно, где вы ожидаете найти нули, как вы хотите их обрабатывать и как вы хотите, чтобы запрос работал, если параметр не был предоставлен. –

+0

Где и как вы генерируете запрос? – Sameer

+0

Я обновил свои вопросы – JagCrackers

ответ

1
select * from UserTable where Gender='Male' AND City IS NULL AND MaritalStatus='Single' AND Groups IS NULL 
1

Предположим, у вас есть ниже параметры

@Gender = 'Male', 
@City = '', 
@MaritalStatus = 'Married' 
@Groups = '' 

и ваш sql выглядит.

select * from UserTable 
where 
(Gender = @Gender OR ISNULL (@Gender, '') = '') 
AND (City = @City OR ISNULL (@City, '') = '') 
AND (MaritalStatus = @MaritalStatus OR ISNULL (@MaritalStatus, '') = '') 
AND (Groups = @Groups OR ISNULL (@Groups, '') = '') 
Смежные вопросы