Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> is null в предложении where 
V
    Опции темы
Cashey
Дата 12.10.2014, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 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


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Zloxa
Дата 12.10.2014, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



Цитата(Cashey @  12.10.2014,  19:56 Найти цитируемый пост)
Конструкция field = @param or field is null не подходит, т.к. в этом случае всегда в выборке будут значения с null, а нужно исключительно или равные параметру или NULL, если @Param =0

Код

 field = @param or field is null and @param is null

или же через isnullcoalesce
Код

coalesce(field,0) = coalesce(@param,0)


Добавлено через 1 минуту и 25 секунд
ах, да, есть же еще ansi nulls но он уже давно заявлен на деприкейт


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
bas
Дата 13.10.2014, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Case не поможет?
PM MAIL   Вверх
Akina
Дата 13.10.2014, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Всё одно плакали индексы, что с CASE, что с COALESCE...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 13.10.2014, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



Цитата(Akina @  13.10.2014,  13:40 Найти цитируемый пост)
Всё одно плакали индексы, что с CASE, что с COALESCE... 

Вобще самый ровный путь это таки "field = @param or field is null and @param is null". Если оптимайзер or не раскрывает, написать or через union all. Встречал случаи, когда оракл раскрыает nvl (аналог isnull), coalsesce, чему был очень приятно удивлен. Хотя is null в оракле это уже не по индексу.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0678 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.