在我的选择中,我使用它来将整数转换为货币形式。
CAST(mytable.discount AS money) AS Discount
但我无法弄清楚如何避免' NULL'输出如果连接失败(有正当理由)带来可选值。
我这样做是为了避免过去使用NULLS:
COALESCE(mytable.voucher,'----') AS Voucher
但我无法弄清楚如何将CAST和COALESCE组合在一起。我只想让我的折扣NULL字段为' ----'
答案 0 :(得分:0)
这很棘手,因为" mytable.discount AS money"将NULLS转换为$ 0
实际上并非发生了什么,而是在之后发生的隐式演员。
表达式必须具有特定类型。在这种情况下,它是money
。因此,我看到$0.00
作为我提议的表达式的结果,因为它的----
转换为money
,而不是NULL
。
作为解决方案,您可以将内部表达式显式转换为文本,如:
SELECT COALESCE(CAST('1' as money)::text, '--');
或
SELECT COALESCE(CAST(null as money)::text, '--');
SQLFiddle演示:http://sqlfiddle.com/#!12/d41d8/2866