【问题标题】:Column Data Type - mySQL列数据类型 - mySQL
【发布时间】:2014-10-08 11:33:06
【问题描述】:

这是我的查询的一部分

(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 创建的,我需要将这些值作为带有两位小数的浮点数。请,任何帮助都会非常有帮助。谢谢。

【问题讨论】:

  • Coalesce 遍历一个值列表,直到找到要返回的非空值。只给它一个字段意味着它发现该字段为空,然后转到下一个字段(没有字段),因此它返回空。 isnull(yourfunction,0) 可能是一种更简单的处理方式

标签: mysql sql floating-point sqldatatypes


【解决方案1】:

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

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

两种修复方法...

coalesce (yourfunction,0)   

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

当您的函数为空时,这将返回 0。

Isnull(yourfunction,0)

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

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2011-10-16
    • 2023-03-16
    相关资源
    最近更新 更多