Python 在MySQL中是否有任何对象不是浮点,但可以接受为浮点?

Python 在MySQL中是否有任何对象不是浮点,但可以接受为浮点?,python,mysql,matplotlib,Python,Mysql,Matplotlib,我正在用一些实验结果构建一个Mysql数据库。通常,我想写入表中的值是float,但有时不是。就像: exp1 exp2 exp3 exp4 gene1 0 1.2 1.3 N/A gene2 2.2 2.0 3.3 1.9 gene3 N/A 5.5 5.2 6.9 由于某些原因,实验值不可用,且不为0。我希望存储这些值的列的类型为float,但它失败了,

我正在用一些实验结果构建一个Mysql数据库。通常,我想写入表中的值是float,但有时不是。就像:

         exp1    exp2    exp3    exp4

gene1       0     1.2     1.3     N/A
gene2     2.2     2.0     3.3     1.9
gene3     N/A     5.5     5.2     6.9
由于某些原因,实验值不可用,且不为0。我希望存储这些值的列的类型为float,但它失败了,因为存在“N/A”

当然,我可以使用Varchar,但当我使用python检索一些值并希望使用matplotlib.pyplot绘制它们的图形时,又出现了一个问题,因为这些“N/a”字符串无法转换为float

请帮帮我


谢谢。

为什么不能将列
设为空
NULL
没有任何值,所有编程语言都会优雅地处理它

使用
选择进行检索时,您可以对列应用
强制转换
,以返回数值

mysql> select cast( 'n/a' as decimal ) na_to_num;
+-----------+
| na_to_num |
+-----------+
|         0 |
+-----------+
另一种选择是在值不可用时插入
NULL
。但不能将
NULL
强制转换为数值。您需要显式检查
NULL
,并在其上返回
0

mysql> select cast( ifnull(null,0) as decimal ) as null_to_num;
+-------------+
| null_to_num |
+-------------+
|           0 |
+-------------+

谢谢你的帮助。但是,当我将这些值绘制在图形上时,null与0在这方面是相同的。我需要区分n/a和0。我已经和我的老板谈过了,他说给n/a一个-1的值是可以的,因为这些值不能是负数。我需要的是提前向用户说明“-1”是N/A,这是我能做的最便宜的方法。无论如何,谢谢你,“演员”的功能真是太棒了。我会调查的。在一张图上什么是空的?我想我不会被我正在使用的绘图功能所接受。不过还是要谢谢你。@Sky愤怒,你真的应该尽可能彻底地调查你处理null的能力,因为这确实是正确的答案。Null不是一个值,它是一个表示缺少值的标记。像AVG()这样的MySQL函数也能正确处理null,例如,3、6和null的平均值=4.5;你不会从任何其他的解决方案中得到这样的真理+1@skywarth:图形中的null表示形式取决于您的库以及如何将null值传递给图形