如果bigquery中的平方根内的计算结果为负数,如何将数字变为零?

6yoyoihd  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(329)

我有一个查询可能导致负平方根,从而导致错误。我在用bigquery。如果ide de power()函数小于0,有没有办法将结果转换为0?
我的问题是:

UPDATE `table` SET 
SW_FERTL = CASE
WHEN POR_CLEAN < 0.04 THEN 1
WHEN (1/((rho_matrix-RHOB)/(rho_matrix-rho_mud_filt)))*POWER(((RW/ILD)+(POWER((0.3*VSHALE/2), 2)-(0.3*VSHALE/2))), 0.5) > 1 THEN 1
ELSE (1/((rho_matrix-RHOB)/(rho_matrix-rho_mud_filt)))*POWER(((RW/ILD)+(POWER((0.3*VSHALE/2), 2)-(0.3*VSHALE/2))), 0.5)
END
WHERE DEPTH_M IS NOT NULL

负平方根可以发生在这里:

POWER(((RW/ILD)+(POWER((0.3*VSHALE/2), 2)-(0.3*VSHALE/2))), 0.5)

所以,如果

((RW/ILD)+(POWER((0.3*VSHALE/2), 2)-(0.3*VSHALE/2)))

小于零,我想改为设置为零。
有可能这样做吗?
提前谢谢!

plupiseo

plupiseo1#

你可以用 GREATEST() :

GREATEST(0, ((RW/ILD)+(POWER((0.3*VSHALE/2), 2)-(0.3*VSHALE/2))))
z3yyvxxp

z3yyvxxp2#

在许多(如果不是大多数)实际情况下,您需要区分零的来源 power(-4, .5) 与。 power(0, .5) 所以,你可以考虑下面的方法

SAFE.POWER(((RW/ILD)+(POWER((0.3*VSHALE/2), 2)-(0.3*VSHALE/2))), 0.5)

以上回报 NULL 如果是否定论点

相关问题