![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Можно ли как то сделать подстановку в предложение WHERE когда (в зависимости от параметра) нужна конструкция field = @param или field is null
Конструкция field = @param or field is null не подходит, т.к. в этом случае всегда в выборке будут значения с null, а нужно исключительно или равные параметру или NULL, если @Param =0 Физически задачу решил конструкцие if @param = 0 запрос с WHERE field is null else тот же самый запрос, но с WHERE field = @param но хотелось бы как-то покрасивее, а не писать два идентичных запроса Это сообщение отредактировал(а) Cashey - 12.10.2014, 19:00 -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
или же через isnull, coalesce
Добавлено через 1 минуту и 25 секунд ах, да, есть же еще ansi nulls но он уже давно заявлен на деприкейт -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
bas |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: 1 Всего: 2 |
Case не поможет?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Всё одно плакали индексы, что с CASE, что с COALESCE...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Вобще самый ровный путь это таки "field = @param or field is null and @param is null". Если оптимайзер or не раскрывает, написать or через union all. Встречал случаи, когда оракл раскрыает nvl (аналог isnull), coalsesce, чему был очень приятно удивлен. Хотя is null в оракле это уже не по индексу. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |