как передать эту информацию в SQL Server 2008? - PullRequest
1 голос
/ 01 марта 2010

Пожалуйста, посетите http://www.stumbleupon.com/

Он спрашивает вас, что вас интересует.

У меня была бы похожая вещь на моем сайте, за исключением того, что мне понадобилось бы 4 таких неидентичных блока. Когда пользователь ничего не выбрал в разделе, это означает, что он / она выбрал их все. Один из этих блоков будет иметь около 10 вариантов, в то время как остальные 3 будут иметь 2-3 варианта каждый.

Как передать все, что выбрал пользователь, в SQL Server 2008? Обратите внимание, что у меня будет 4 набора из нескольких параметров, и эти 4 набора в основном представляют собой 4 разных столбца в строке, все из которых содержат целочисленные идентификаторы. Если и только если был передан один параметр на раздел, я бы сделал что-то вроде

выберите * из таблицы, где column1 = @ param1, column2 = @ param2 и т. Д.

но это не так, потому что пользователь может передать несколько значений для @ param1 и т. Д.

Я могу это сделать, но я хочу знать наиболее эффективный способ.

Если мой пост не понятен, пожалуйста, дайте мне знать.

EDIT: В основном, если я храню статьи в базе данных, у меня есть 4 столбца в строке, каждое целое число. И я хочу запросить эти статьи на основе этих 4 столбцов, но главное - передать несколько значений для этих столбцов, а не только одно значение на столбец.

Ответы [ 3 ]

1 голос
/ 02 марта 2010

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

http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters

если вы не можете их использовать, посмотрите на Массивы и Списки в TSQL:

http://www.sommarskog.se/arrays-in-sql.html

Это очень полный список условий динамического поиска в TSQL:

http://www.sommarskog.se/dyn-search.html

это также может помочь:

Разумный / быстрый метод передачи списков переменных в хранимую процедуру SqlServer2008

0 голосов
/ 16 мая 2012

Не будет ли такой запрос работать в этом случае?

SELECT * 
FROM   TABLE 
WHERE  COLUMN1 IN ( @param11, @param12, @param13 ) 
       AND COLUMN2 IN ( @param21, @param22, @param23 )  

и т. Д.

0 голосов
/ 01 марта 2010

Попробуйте выгрузить все значения параметров в XML, затем передать их на SQL Server, а затем проанализировать в запросе.

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