Denodo:如何聚合varchar数据类型?

时间:2018-04-24 21:00:20

标签: denodo

我正在Denodo的视图表中的anstime列创建聚合,我正在使用Cast将其转换为float,它仅适用于那些带句点的数字(例如123.123),但不适用于没有句号的数字(例子123)。这是我的代码,仅适用于具有句点的那些数字:

SELECT row_date,
    case
        when sum(cast(anstime as float)) is null or sum(cast(anstime as float)) = 0
        then 0
        else sum(cast(anstime as float))
    end as xans
FROM table where anstime like '%.%'
group by row_date

有人可以帮助我如何处理没有期限的人吗?

3 个答案:

答案 0 :(得分:0)

您的where anstime like '%.%'子句将限制对anstime中有句号的地方的可能响应。如果要允许所有值,请删除它。

答案 1 :(得分:0)

我感谢那些回应我关注的人。最后,我们必须联系我们的开发人员,将列的数据类型从varchar修复为float,而不是解决方法。

答案 2 :(得分:0)

我的猜测是你在anstime中得到的值不是数字的,因此为什么不让where anstime like '%.%'谓词导致失败,正如其他评论中所提到的那样。

您可以尝试添加一个中间视图,然后删除任何非数字值(当然还有小数点字符),这样就可以让您不必使用where anstime like '%.%'过滤器了。 / p>

也许REGEXP函数可能有帮助