Mysql - 您可以在一种情况下检查空白字符串和0吗?

Mysql - 您可以在一种情况下检查空白字符串和0吗?

问题描述:

我想在mysql中检查列是否为空,即''或。 有一种方法可以在一种情况下做到这一点吗? 像Mysql - 您可以在一种情况下检查空白字符串和0吗?

  • WHERE ORDER_ID>'

  • WHERE ORDER_ID!= ''

要么这些工作,还是有不同的解决方案?

+0

什么类型!是'order_id'?一个字符串类型? – outis 2010-10-26 10:24:31

+1

您在'空白'的定义中是否包含'NULL'?什么是空白? – Spudley 2010-10-26 10:25:52

+0

order_id是一个字符串类型。如果不是空白或0看起来像'333-33333'... NULL不包括在内。空白空间永远不会是一个选项 – 2010-10-26 10:42:33

这是否符合条件?

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

是的,这是一个条件,但它是如同优化的WHERE order_id = 0(因为这是有效的,我试过了,它也带来了空白)。或者没有关系... – 2010-10-26 10:40:36

为什么不ü使用smiple查询,其中两个UR条件将要测试的

SELECT * FROM tbl_name其中的order_id =”'或ORDER_ID = 0

试试这个它会工作

这是更多的数据质量问题。在设计良好的数据库中,''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

但是,最终,它不依赖于正是你期待的数据字段包含了,你想怎么反应不同类型的内容。

+0

是的,你是对的,理想情况下,所有列应该只能保持一种类型。但我没有设计这个,我不能改变它... – 2010-10-26 10:38:41

+0

@esther:好吧,所以采取'下一个最佳'的方法,并将其投入查询。 – Spudley 2010-10-26 10:45:43

+0

你能举个例子吗?它会是... WHERE CAST(order_id AS int)!= 0 ?? – 2010-10-26 10:51:34

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

  • WHERE ORDER_ID = 0

这将显示结果,其中的order_id不为0,也没有空白