money型は貨幣金額を固定精度の小数点で格納します。 表8-3を参照してください。 '$1,000.00'などの"典型的な"通貨書式の他、整数、浮動小数点リテラルなど様々な書式の入力を受け付けます。 出力形式は通常は"典型的な"通貨書式となりますが、ロケールによって異なります。 引用符で括られていない数値を、数値をtextにキャストし、その後にmoneyにキャストすることで、moneyに変換することができます。
SELECT 1234::text::money;
ロケールに依存せずに反対、すなわち、money値から数値型へのキャストを行う単純な方法はありません。
通貨記号と1000単位の区切り文字が既知であれば、regexp_replace()
を使用することができます。
SELECT regexp_replace('52093.89'::money::text, '[$,]', '', 'g')::numeric;
このデータ型を出力したものはロケールへの依存性が高いため、lc_monetaryの設定が異なるデータベースへは、money型のデータをうまくロードすることができない可能性があります。 この問題を回避するためには、ダンプをリストアする前にlc_monetaryがダンプ元のデータベースと同じまたは等価であることを確認してください。