前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个SQL,让人头秃

一个SQL,让人头秃

原创
作者头像
herain
发布2024-09-27 22:40:22
390
发布2024-09-27 22:40:22
举报
文章被收录于专栏:数据指象

现象:

同一个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。

欢迎-留言-你遇到的坑

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档