2014-01-16 2 views
0

У меня есть столбец MySQL, который INT, он может содержать 0 и это также NULL возможностькак переключиться на IS-оператор, когда значение операнда равно NULL?

В настоящее время я использую это:

SELECT 
    ... 
FROM 
    `mytable` 
WHERE 
    IF(:mydata IS NULL, `mycolumn` IS NULL, `mycolumn` = :mydata) 

Но мне интересно, если есть более короткий и conciser путь чтобы получить тот же результат

Спасибо заранее

+1

Вы также можете использовать 'в' на вашей колонке. 'where mycolumn in (null,: mydata)'. –

ответ

2

Используйте <=> оператор сравнения для NULL безопасного сравнения:

SELECT 
    ... 
FROM 
    `mytable` 
WHERE 
    `mycolumn` <=> :mydata 
1

не может быть короче, но более понятным способом является использование OR, Лика е это:

SELECT 
    ... 
FROM 
    `mytable` 
WHERE 
    mycolumn IS NULL OR mycolumn = :mydata 

Он возвращает строки, имеющие NULL значение в mycolumn в дополнение к строкам, которые точно соответствуют с mydata.

Смежные вопросы