采用hash函数
with a as(
select 1 as c1
,null as c2
,3 as id
union all
select 1 as c1
,0 as c2
,3 as id
)
,
with b as (
select 1 as c1
,null as c2
union all
select 1 as c1
,0 as c2
)
select a.c1
,b.c1
a.c2
b.c2
from a
left join b
on a.id =b.id
where hash(a.c1+1 --加1的目的是因为hash(0)=hash(null),这两个意义不一样
,b.c2+1
)
<>
hash(b.c1+1
,b.c2+1)
本文探讨了在SQL查询中使用hash函数的方法,特别是在处理NULL值时如何通过增加偏移量避免hash碰撞的问题。通过两个WITH子句定义的数据集进行左连接,并使用hash函数来比较不同字段组合的值。
6万+

被折叠的 条评论
为什么被折叠?



