Mysql - Можете ли вы проверить как пустую строку и 0 в одном условии? - PullRequest
2 голосов
/ 26 октября 2010

Я хочу проверить в mysql, является ли столбец пустым, то есть '' или 0 .Есть ли способ сделать это с одним условием?Например

  • ГДЕ order_id> ''

или

  • ГДЕ order_id! = ''
* 1016либо из этих работ, или есть другое решение?

Ответы [ 4 ]

3 голосов
/ 26 октября 2010

Это больше вопрос качества данных. В хорошо спроектированной базе данных должна быть довольно четкая разница между '' и 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

Однако, в конце концов, это зависит от того, что именно вы ожидаете от поля данных, и от того, как вы хотите реагировать на различные типы контента.

2 голосов
/ 26 октября 2010

Это квалифицируется как одно условие?

... WHERE order_id IN ('0', '');
1 голос
/ 26 октября 2010

Я немного поэкспериментировал, и, кажется, ответ:

  • ГДЕ order_id! = 0

Это покажет результаты, где order_id не 0 и также не пусто

0 голосов
/ 26 октября 2010

почему вы не используете запрос smiple, в котором будут протестированы оба ваших условия

...