コンテンツにスキップ

すべてのレイクハウスエンジンで利用できるPlaidCloudの関数です。1番目の数値を2番目の数値で割ります。分母がゼロの場合、またはどちらかの側がNULLの場合、結果はNULLになります。3番目の値を指定した場合は、代わりにその値が返されます。最初に両辺を 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>)

3番目の引数を指定しない場合は COALESCE が付かず、分母がゼロのときの結果はNULLになります。

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