Элегантный способ для "где" предложение по вектору? - PullRequest
1 голос
/ 15 января 2012

таблица:

name |   isActive       //(bit -  not nullable)
___________________
a          1
b          1
c          0
d          0
...        ...

в интерфейсе у меня есть это:

enter image description here

пользователь может выбрать, если он хочет только Active ones, Non Active ones, Nothing

Я создаю вектор, который может иметь одно из следующих значений: '11,10,01,00'

10 = дай мне актив, не дай мне - не актив

01 = дай мне неактивные, не дай мне - активные

11 дай мне оба ...

00 ничего ...

это начало.

но я ищу самый элегантный способ предложения where в моем запросе:

мой выстрел:

select ...
WHERE  isActive = CASE  WHEN LEFT(@vector, 1) = RIGHT(@vector, 1)
       AND RIGHT(@vector, 1) = '1' THEN isActive
         ELSE 
          ... ( more option calculations ( bad and long and non elegant ...)

           END

какая-нибудь элегантная помощь?

1 Ответ

0 голосов
/ 15 января 2012

Я не понимаю, что вы подразумеваете под 00 - NOTHING. На самом деле это означает, что вам не нужно выполнять запрос.
Вы можете попробовать это:

...
WHERE isActive=@isActive OR @isActive IS NULL

Когда вы заботитесь о isActive, вы передаете 1 или 0 на @isActive, а когда вы не передаете NULL.

Но этот запрос не будет использовать индексы над isActive.

...