Это больше вопрос качества данных. В хорошо спроектированной базе данных должна быть довольно четкая разница между ''
и 0
.
Если вы не уверены в этом, есть много значений, которые могут быть интерпретированы как "пустые" в дополнение к этим двум. NULL
очевиден, но как насчет пустого пространства? Либо строка, содержащая 0.00
, либо, даже если вы ищете числовое значение, любую нечисловую строку.
В идеале данные должны храниться в формате, который соответствует типу данных, которые они должны содержать - например, если вы ожидаете числовое поле, это должен быть int
или другой числовой тип, в зависимости от того, что именно вы хотите хранить. Таким образом, он никогда не может содержать строковое значение, поэтому вам никогда не придется проверять его.
Если вы не можете изменить тип в самой БД, следующим лучшим решением будет приведение значения к типу данных, который вы ожидаете в запросе выбора. например:
SELECT CAST(myfield as int) as myfieldnum FROM table where myfieldnum != 0
См. Руководство MySQL для получения дополнительной информации: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html
Однако, в конце концов, это зависит от того, что именно вы ожидаете от поля данных, и от того, как вы хотите реагировать на различные типы контента.