Запрос базы данных из поиска с пустыми значениями - PullRequest
1 голос
/ 16 января 2009

Я использую asp .net для поиска веб-форм в c #, например, с полями: - название - фрукты

Я хочу написать sproc, который может искать имя или фрукт. Если бы я знал, что оба будут иметь значения, я бы передал два параметра в sproc и написал бы:

Select * from myTable where name =@name and fruit = @fruit

Однако иногда имя или фрукт могут быть пустыми. Без написания отдельного поиска по фруктам и названию. Как бы я этого достиг?

Я бы предпочел не создавать динамический запрос, если это возможно, но если это единственный способ, как бы я его написал?

Ответы [ 4 ]

4 голосов
/ 16 января 2009

Вам нужно убедиться, что пустые строки не передаются в качестве аргументов, а не null, но должно работать следующее. Однако я уверен, что если пользователь ничего не введет, значение формы будет нулевым.

 select * from myTable
 where (@name is null or name = @name) and (@fruit is null or fruit = @fruit)
1 голос
/ 16 января 2009

может быть:

SELECT * FROM myTable WHERE name Like '%' + @name AND fruit LIKE '%' + @fruit
0 голосов
/ 16 января 2009
select * from myTable where name = isnull(@name, name) and fruit = isnull(@fruit, fruit)

Вернет всю таблицу, если @name и @fruit равны нулю. Если это проблема, вам лучше добавить в SP дополнительную логику.

0 голосов
/ 16 января 2009
select * from myTable 
where 
   (name = @name and fruit = @fruit)
   or (name = @name and @fruit is null)
   or (fruit = @fruit and @name = is null )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...