MySQL - 如何使用存储的 precision/scale 将数字转换为十进制?

MySQL - How to convert number to decimal using stored precision/scale?

我有 table 笔付款,其中每条记录都有 currency_id。当我 SELECT 付款时,我想将值格式化为具有正确小数位数的小数。货币 table 有一个名为 decimals 的列。

SELECT p.sale
 , CONVERT(p.amount, DECIMAL(21,c.decimals)) as formatted_amount
FROM payment p 
JOIN currency c ON p.currency_id=c.id

当我这样做时,我得到 Syntax error or access violation: 1064

DECIMAL(M,D)中的M和D只能是const数,如DECIMAL(5,2)。

发现实现既定目标的唯一方法是使用如下语句:

SELECT p.sale
, (CASE WHEN c.decimals=0 THEN CONVERT(p.amount,DECIMAL(21,0))
    WHEN c.decimals=1 THEN CONVERT(p.amount,DECIMAL(21,1))
    WHEN c.decimals=2 THEN CONVERT(p.amount,DECIMAL(21,2))
    ELSE p.amount END) as formatted_amount
FROM payment p 
JOIN currency c ON p.currency_id=c.id