通貨型

PostgreSQL 8.4.1文書
前のページ | 巻戻し | 第 8章データ型 | 早送り | 次のページ

# 8.2. 通貨型

`money`型は貨幣金額を固定精度の小数点で格納します。 表8-3を参照してください。小数点精度はデータベースのlc_monetary設定で決定されます。 `'$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`がダンプ元のデータベースと同じまたは等価であることを確認してください。

表 8-3. 通貨型

型名 | 格納サイズ | 説明 | 範囲
--- | --- | --- | ---
money | 8バイト | 貨幣金額 | -92233720368547758.08 から +92233720368547758.07

前のページ | ホーム | 次のページ
数値データ型 | 上に戻る | 文字型