Фильтрация битовых полей SQL - PullRequest
0 голосов
/ 27 февраля 2011

просто быстрый вопрос здесь.

Допустим, у меня есть хранимая процедура выбора записей из таблицы.

select * from tbl_table
where deleted = @deleted

Так что для этого выше, я должен передать параметр TRUE или FALSE.

Можно ли возвращать результаты, если удалено равно TRUE и FALSE, но при этом сохраняется опция для передачи параметра. Таким образом, я думаю, что если параметр не передан, фильтра нет.

Другой способ, которым я думал, это сделать ..

select * from tbl_table
where deleted = @deleted1
and deleted = @deleted2

Итак, у вас есть 2 параметра для одного и того же фильтра. Таким образом, вы можете сделать true или false или установить оба фильтра одинаково, что дает большую свободу действий.

Если у кого-то есть идеи или мысли по этому поводу, это было бы замечательно!

1 Ответ

2 голосов
/ 27 февраля 2011

установите ваш параметр как обнуляемый (= NULL), а затем

select * from tbl_table 
where (@deleted IS NULL) OR (deleted = @deleted)

Тогда не указывайте параметр (или явно указывайте как NULL), если вы не хотите применять фильтр по этому параметру.

(но учтите, что иногда это может иметь последствия для перехвата параметров, особенно при большом количестве параметров)

...