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:

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

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

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

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

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

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

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

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

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

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

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

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

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

    ReplyDelete
  14. 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!

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

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

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

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

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

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

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

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

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

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

    ReplyDelete
  25. This comment has been removed by a blog administrator.

    ReplyDelete