一个SQL,让人头秃

现象:同一个SQL多次查询的结果不一样!很让人头秃,怎么回事???验证:Presto 引擎:select 0.01 <> "NULL"计算结果    :trueOneSQL 引擎:select 0.01 &l

一个SQL,让人头秃

现象:

同一个SQL多次查询的结果不一样!很让人头秃,怎么回事???

验证:

Presto 引擎:select 0.01 <> "NULL"

计算结果    :true

OneSQL 引擎:select 0.01 <> "NULL"

计算结果 :true

Spark/Spark3引擎:select 0.01 <> "NULL"

计算结果 :NULL

结论:

SQL查询中 不同类型的字段 比较时,会强制做字段类型转换。保证比较字段二者类型的一致。

然后不同计算引擎的类型转换策略不同(向左还是向右?)。

Presto/OneSQL 引擎 会强制 左侧比较字段的类型 向 右侧比较字段类型 靠齐,所以 select cast( 0.01 as varchar(66535)) <> "NULL"  结果是 true。

Spark/Spark3引擎会强制 右侧比较字段的类型 向 左侧比较字段类型 靠齐,所以 select 0.01<> cast("NULL" as double) 结果是 NULL。

欢迎-留言-你遇到的坑

发布者:admin,转转请注明出处:http://www.yc00.com/web/1755072401a5235308.html

相关推荐

  • 一个SQL,让人头秃

    现象:同一个SQL多次查询的结果不一样!很让人头秃,怎么回事???验证:Presto 引擎:select 0.01 <> "NULL"计算结果    :trueOneSQL 引擎:select 0.01 &l

    1月前
    210

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信