SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.12.2010 14:48:46

egorr
Участник
Зарегистрирован: 18.12.2010
Сообщений: 4

Несколько условных операторов в WHERE Можно ли?

Добрый день!
Скажите пожалуйста, возможна ли такая вот конструкция?

SELECT *
FROM employer
WHERE
employer.boss = ''
AND employer.tel_id = 0 || '' || NULL


Пробовал. Ругани не слышно вроде... В манах запрета не нашел...

Неактивен

 

#2 18.12.2010 18:52:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Несколько условных операторов в WHERE Можно ли?

Возможна, но она достаточно бесполезна wink

Если у Вас не стоит режим работы PIPES_AS_CONCAT, то || эквивалентен
OR. В результате у Вас получается «(условие) OR '' OR NULL». Так как
'' всегда ложь, а NULL в данном контексте интерпретируется как ложь, то
они не вносят никакого полезного функционала smile

В противном случае (включен PIPES_AS_CONCAT) результат выборки будет
всегда пустым wink

Неактивен

 

#3 18.12.2010 21:01:12

egorr
Участник
Зарегистрирован: 18.12.2010
Сообщений: 4

Re: Несколько условных операторов в WHERE Можно ли?

То есть строку

... AND employer.tel_id = 0 || '' || NULL...

лучше расписать как
... employer.tel_id = ''  OR
 employer.tel_id =  '0'  OR  
 employer.tel_id =  NULL  AND...  

Я пытаюсь выбрать все записи, где некоторые поля либо пусты, либо имеют дефолтное значение, либо имеют некорректное значение. Поэтому и возникла необходимость проверять на соответствие нескольким значениям...
Во, придумал!.. Надо использовать IN и список нехороших значений ('0','',NULL)!
Пошел пробовать!
Спасибо, paulus!

Неактивен

 

#4 20.12.2010 17:48:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Несколько условных операторов в WHERE Можно ли?

IN (NULL) работать не будет. Любая операция с NULL возвращает NULL (потому что
не известно, какой должен быть результат). Именно поэтому рекомендуют не исполь-
зовать колонки NULL в случае, где это не нужно.

Неактивен

 

#5 20.12.2010 18:01:33

egorr
Участник
Зарегистрирован: 18.12.2010
Сообщений: 4

Re: Несколько условных операторов в WHERE Можно ли?

Я понял. Спасибо!

Неактивен

 

#6 20.12.2010 20:18:52

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Несколько условных операторов в WHERE Можно ли?

employer.tel_id =  NULL

правильно так: employer.tel_id IS NULL

Неактивен

 

#7 20.12.2010 20:30:01

egorr
Участник
Зарегистрирован: 18.12.2010
Сообщений: 4

Re: Несколько условных операторов в WHERE Можно ли?

Да, спасибо! Я так и сделаю.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson