现象:
同一个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。
欢迎-留言-你遇到的坑