2012-01-17 1 views
1

У меня есть простой запрос БД. В основном я хочу выбрать все строки, которые НЕ равны определенному набору строк, или пуст (если он пуст, я НЕ хочу, чтобы он был выбран).MYSQL Null issues

Это то, что я получил:

select * from tbl_user where secretCode != ('S00' OR 'S05' OR 'A10' OR '') 

Тип данных secretcode является CHAR(4), NULL (NO), DEFAULT NONE

Что я здесь делаю неправильно, я должен использовать NULL вместо ''?

Спасибо.

ответ

2

Я думаю, что ваш запрос должен быть таким:

select * from tbl_user where secretCode NOT IN ('S00', 'S05', 'A10', '') AND 
secretCode IS NOT NULL 
+0

NOT IN - хранитель. – Shackrock

1
select 
    * 
from 
    tbl_user 
where 
    secretCode not in ('S00', 'S05', 'A10') and secretCode not is null 

NULL Проверка Шоуда быть сделано с is null или not is null.

+0

Hm ок. Теперь я пробую это (и мой предыдущий код) в PHPMyAdmin. Я не получаю результатов с более чем 1 значением, указанным в скобках после '! =' ... любых идей? – Shackrock

+0

посмотри на мой ответ – faq

+0

Не могли бы вы попробовать еще раз? Я обновил ответ на аккаунт 'in'. Не совсем уверен, что Mysql специально поддерживает это, но большинство RMDBS'ов делают ... – ChristopheD

0

Вы должны использовать оператор IS NOT NULL согласно here

SELECT * FROM `tbl_users` 
WHERE `secretCode` != ('S00' OR 'S05' OR 'A10') AND `secretCode` IS NOT NULL 
0

использования:

SELECT * FROM `tbl_users` WHERE `secretCode` <> ('S00' OR 'S05' OR 'A10') AND `secretCode` IS NOT NULL