我有问题。如果artikel.preis是2430而umsatz.opreis是2722.
COALESCE(ROUND(artikel.preis/NULLIF(umsatz.opreis,0),0),9999) as kontroll
在MySQL中我得到1作为结果,但在PostgresSQL中我得到0。
为什么会那样? 2430/2722 = 0.8927并应舍入为1.
我怎样才能在Postgres中使用它,然后在MySQL中使用postgres中的其他内容?
答案 0 :(得分:3)
在PostgreSQL中,/运算符根据其操作数的类型进行除法,如果artikel.preis
和umsatz.opreis
都是整数,则除法将是整数除法:
select 2430/2722
将返回0,而
select 2430::float/2722::float
将返回预期结果。试试这个:
COALESCE(ROUND(artikel.preis::float/NULLIF(umsatz.opreis::float,0),0),9999) as kontroll
但是,要小心umsatz.opreis
为空或为零,它将导致除零条件。如果你有圆形问题,这个查询会将结果转换回整数:
COALESCE((artikel.preis::float/umsatz.opreis::float)::int,9999) as kontroll