列数据类型 - mySQL

时间:2014-08-14 17:50:01

标签: mysql sql floating-point sqldatatypes

这是我的查询的一部分

(t.as_num_responded-sqrt(t.as_num_responded))/t.as_num_subjects as 'RF score'

其中t是我的数据库,当我尝试使用coalesce函数时问题到了,它不起作用,将NULL替换为0。

coalesce(t.as_num_responded-sqrt(t.as_num_responded))/t.as_num_subjects) as 'RF score'

不确定我是否使用了coalesce错误,或者是否因为新列'RF得分'被创建为varchar,我需要将值作为带有两位小数的浮点数。请,任何帮助将非常有帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

我的评论几乎是一个答案。

Coalesce遍历值列表并返回第一个非null值。不幸的是,你给它一个争论,如果那个值为null ......它会转到下一个,什么也找不到,并返回null。

两种修复方式......

coalesce (yourfunction,0)   

其中你的函数是(t.as_num_responded-sqrt(t.as_num_responded))/ t.as_num_subjects)行

当函数为空时,这将返回0.

Isnull(yourfunction,0)

Isnull是一个更简单的版本...它不是取一个字段列表,而是只做一个字段并用isnull函数的第二个参数替换空值。