Monday, July 6, 2009

Select * from table where column in %

This method allows you to filter a column based on a list supplied by the user or when the user doesn't supply anything to return all the results without using dynamic SQL.  You can use ANDs in the where clause to include additional filters.  In our application we parse a comma delimited string in SQL to get our list of user input.  SQL 2005 introduced table variables and you could probably use those instead.
--pretend this table contains all the states.
      declare @states table (identifier varchar(2))
      insert into @states
            select 'MI' UNION
            select 'CO' UNION
            select 'NY'

--this simulate states selected in the application
      declare @selectedStates table (identifier varchar(2))

--insert a state to simulate the user selecting a state.
      insert into @selectedStates --comment this line to see @allStates flip
            select 'MI'           --comment this line to see @allStates flip
declare @allStates bit

--if the user hasn't selected a state get all the results.
if ((select count(*) from @selectedStates) = 0)
      select @allStates = 1

--give back the results:
select identifier from @states
      where (identifier in (select identifier from @selectedStates) OR @allStates = 1) AND 1=1 --additional filters could go here instead of 1=1


25 comments:

Anonymous said...

Привет! С удовольствием почитал Ваш блог. Хочу также поздравить Вас и всех читателей этого блога с новым 2010 годом. Удачи всем, новых жизненных побед и исполнения всех ваших замыслов. :)

Anonymous said...

Уважаемые читатели. С Рождеством христовым хочется вас поздравить. Админу сайта отдельное пожелание-побольше читателей на блоге, креативных интересных статей и всего всего всего :)

Anonymous said...

А мне пост понрвился. Добавил в букмарки. (не спам)

Anonymous said...

Хороший сайт. Так держать!!!

Anonymous said...

Хорошо написал. Так держать!!! :)

Anonymous said...

+1 поддерживаю

Anonymous said...

Молодец, хороший пост.

Anonymous said...

А у Вас талант писателя прям :)

Anonymous said...

А мне блог понравился

Anonymous said...

Nice dispatch and this mail helped me alot in my college assignement. Say thank you you as your information.

Anonymous said...

Мне вот кажется, что такое написать мог то ли креативный гений, то ли героиновый наркоман :(

Anonymous said...

Не очень люблю такие тексты %:(

Anonymous said...

В Вашей RSS нельзя получать полные тексты записей, что ли?

Dave said...

I am publishing the full text. I'm subscribed to my blog via Google Reader and I get full text there. If you can help me diagnose the issue you are experiencing i'd appreciate it. If there is anything you want me to try, let me know.
Thanks!

Anonymous said...

Логотип мне нравится:)

Anonymous said...

У Вас долго загружается блог - видимо, хостинг плоховат

Anonymous said...

Об этом уже писал кто-то из моих ЖЖ-френдов :(

Anonymous said...

На словах ты Лев Толстой, а не деле ... простой!

Anonymous said...

А сегодня день архивного работника. У вас на сайте есть "Архив"? Можете праздновать! :))

Anonymous said...

У нас в жж за такой пост бы закидали какашками в каментах:)

Anonymous said...

У нас в жж за такой пост бы закидали какашками в каментах:)

Anonymous said...

Хорошая статья. Действительно было интересно почитать. Не часто такое и встречается та.Наверное стоит подписаться на ваше RSS

Anonymous said...

Действительно интересно. Побольше бы таких статей.

Anonymous said...

Очень интересная статья. Скажите, а могу ли я ее повесить на один из своих сайтов? Соотвественно с гиперсылкой на вас.

Windows 7 Key said...
This comment has been removed by a blog administrator.