跳转到内容

PlaidCloud 函数,所有 Lakehouse 引擎均可使用。将第一个数除以第二个数。分母为零或任一侧为 NULL 时,结果为 NULL;如果提供了第三个值,则返回该值。运算前会先将两侧转换为 DECIMAL(38, 10),因此整数列相除不会被截断。

func.safe_divide(<numerator>, <denominator>, <divide_by_zero_value>)
func.safe_divide(<numerator>, <denominator>)
func.safe_divide(table.revenue, table.units, 0)
| revenue | units | safe_divide |
|---------|-------|-------------|
| 100 | 8 | 12.5 |
| 100 | 0 | 0 |
| 100 | NULL | 0 |
func.safe_divide(table.revenue, table.units, None)
| revenue | units | safe_divide |
|---------|-------|-------------|
| 100 | 8 | 12.5 |
| 100 | 0 | NULL |

没有同名的 SQL 函数。该表达式会编译为:

COALESCE(CAST(<numerator> AS DECIMAL(38, 10)) / NULLIF(CAST(<denominator> AS DECIMAL(38, 10)), 0), <divide_by_zero_value>)

如果没有第三个参数,则不使用 COALESCE,分母为零时结果为 NULL:

CAST(<numerator> AS DECIMAL(38, 10)) / NULLIF(CAST(<denominator> AS DECIMAL(38, 10)), 0)