Mysql - 你可以在一个条件下检查一个空字符串和0吗?

时间:2010-10-26 10:18:18

标签: mysql conditional-statements

我想检查mysql,如果列是空白的,即'',或 0 。 有没有办法在一个条件下做到这一点? 喜欢

  • WHERE order_id> ''

  • WHERE order_id!=''

其中任何一种都可以使用,还是有不同的解决方案?

4 个答案:

答案 0 :(得分:3)

这更像是数据质量的问题。在设计良好的数据库中,''0之间应该有明显的区别。

如果你对它含糊不清,除了这两个值之外,还有很多值可以解释为“空白”。 NULL是显而易见的,但白色空间怎么样?或者包含0.00的字符串,或者即使您正在查找数字值,也可以是任何非数字字符串。

理想情况下,数据应以与其应该保存的数据类型相匹配的格式存储 - 例如,如果您期望数字字段,则应该是int或其他数字类型,具体取决于您要存储的内容。这样,它永远不会包含字符串值,因此您永远不需要检查它。

如果您无法更改数据库本身的类型,则下一个最佳解决方案是将值转换为您在select查询中期望的数据类型。例如:

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

但是,最终,它确实取决于您期望数据字段包含的内容,以及您希望如何对不同类型的内容做出反应。

答案 1 :(得分:2)

这是否符合一个条件?

... WHERE order_id IN ('0', '');

答案 2 :(得分:1)

我试验了一下,似乎答案是:

  • WHERE order_id!= 0

这将显示order_id不为0且不为空白的结果

答案 3 :(得分:-1)

为什么不使用简单的查询来测试两个条件

从tablename中选择*,其中orderid =''或order_id = 0

试试这个会起作用