开发者社区 问答 正文

MaxCompute的关系运算符注意点是什么?

MaxCompute的关系运算符注意点是什么?

展开
收起
游客qzzytmszf3zhq 2021-12-08 17:27:17 330 分享 版权
1 条回答
写回答
取消 提交回答
  • 关系运算符注意点:

    在进行部分关系运算之前,需要首先进行类型转换,否则可能返回NULL。如下举例,'2019-02-16 00:00:01'为DATETIME类型,而'2019-02-16'为STRING类型,在进行比较关系运算前需首先完成显示类型转换:

    select cast('2019-02-16 00:00:01' AS string) > '2019-02-16'; select cast('2019-02-16 00:00:02' AS datetime) > '2019-02-16 00:00:01';

    由于DOUBLE值存在一定的精度差,因此建议两个DOUBLE类型相减,取绝对值的方式进行判断。当绝对值足够小时,认为两个DOUBLE数值相等,比如:

    abs(0.9999999999 - 1.0000000000) < 0.000000001 -- 0.9999999999和1.0000000000为10位精度,而0.000000001为9位精度。 -- 此时可以认为0.9999999999和1.0000000000相等。

    在将String类型和Bigint类型数据进行比较时,这两个数据都将转换成Double类型,比较过程中可能丢失精度,所以需要将String用cast显示转换成Bigint类型运算。

    2021-12-08 17:27:36
    赞同 展开评论