sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで数値をフォーマットする方法

    Postgresを使用する場合は、to_char()を使用できます。 指定された形式で数値を出力する関数。

    それが機能する方法は、2つの引数を提供することです。最初の引数は、フォーマットされる数値です。 2番目の引数は、フォーマット方法を決定します。

    戻り値はテキストです 。

    要件によっては、たとえばcast()を使用して、数値を適切なデータ型に変換することをお勧めします。 機能。

    両方の方法の例を以下に示します。

    これがデモンストレーションの基本的な例です。

    SELECT to_char(10, '99.99');

    結果:

    10.00

    9 この文脈では、実際には特別な意味があります。この文字は、数値をフォーマットするときにフォーマット文字列を構成できる有効なテンプレートパターンの1つです。

    9の場合 、桁の位置を指定しますが、先行ゼロの場合はスペースに置き換えられ、末尾ゼロの場合は塗りつぶしモードが指定されている場合は削除されます。

    小数点以下の桁数と秒の小数部を削除すると、異なる結果が得られます。

    SELECT to_char(10, '99');

    結果:

    10

    先行ゼロを削除

    9を置き換えることができます 0を使用 重要でない場合でも、先頭と末尾のゼロを抑制したい場合。

    これが2つの違いを示す例です。

    SELECT 
      to_char(0010, '9999') AS "9999",
      to_char(0010, '0000') AS "0000";

    結果:

     9999  | 0000  
    -------+-------
        10 |  0010

    テンプレートパターン

    前の例で見たように、フォーマット文字列は1つ以上のテンプレートパターンで構成されています。

    例:9999 は、4つのテンプレートパターンで構成されるフォーマット文字列です。各パターンは9です。 。

    小数点以下の桁数は別のテンプレートパターンです。

    Dを使用できたはずです 小数点の代わりに。実際のフォーマットには現在のロケールが使用されます。

    SELECT 
      to_char(10, '99.99') AS "99.99",
      to_char(10, '99D99') AS "99D99";

    結果:

     99.99  | 99D99  
    --------+--------
      10.00 |  10.00

    テンプレートパターンと修飾子の完全なリストについては、Postgresの数値フォーマット用のテンプレートパターンと修飾子を参照してください。

    テンプレートパターン修飾子

    テンプレートパターンと一緒に使用できる修飾子もいくつかあります。これらは、使用される修飾子に応じて、出力のフォーマット方法を変更します。

    具体的には、数値の書式設定で使用できる3つの修飾子があります。

    修飾子 説明
    FM プレフィックス 塗りつぶしモード(末尾のゼロとパディングブランクを抑制)
    TH 接尾辞 大文字の序数の接尾辞
    th 接尾辞 小文字の序数接尾辞

    最初のものはテンプレートパターンのプレフィックスとして追加され、他の2つはサフィックスとして追加されることに注意してください。

    序数

    一般的な要件は、数値を序数に変換することです。どちらのTHも使用できます またはth そのため、接尾辞を大文字にするか小文字にするかによって異なります。

    これが例です。

    SELECT to_char(03, 'FM99th');

    結果:

    3rd

    この場合、FMも使用しました 空白と末尾のゼロを抑制します。

    FMを使用した場合の比較は次のとおりです 省略します:

    SELECT 
      to_char(03, '99th') AS "99th",
      to_char(03, 'FM99th') AS "FM99th";

    結果:

     99th  | FM99th 
    -------+--------
       3rd | 3rd

    よく見ると、最初の列には先頭の空白がありますが、2番目の列にはありません。

    通貨

    もう1つの一般的な要件は、特定の通貨で数値を出力することです。

    この場合、Lを使用できます ロケール対応の通貨記号を表示するためのテンプレートパターン。

    SELECT to_char(03, 'LFM99D00');

    結果:

    $3.00

    署名された番号

    署名された番号のテンプレートパターンもあります。

    これが例です。

    SELECT to_char(27, 'S99');

    結果:

    +27

    ここでは、Sを使用しました 番号に固定されたロケール対応の記号を追加します。

    この場合、それは正の数でした。負の値を使用する別の例を次に示します。

    SELECT to_char(-27, 'S99');

    結果:

    -27

    署名された番号に使用できる他のいくつかのテンプレートパターンがあります。

    例については、Postgresの数値にプラス/マイナス記号を付加するを参照してください。

    また、前述のように、数値をフォーマットするときに使用できるテンプレート修飾子の完全なリストについては、Postgresの数値フォーマット用のテンプレートパターンと修飾子を確認してください。

    データ型

    前述のように、to_char() 関数はその結果をテキストとして出力します 。

    要件によっては、数値をより適切なデータ型に変換する方がよい場合があります。

    数値をお金のデータに変換する例を次に示します。 タイプ。

    SELECT cast(10 as money);

    結果:

    $10.00

    1. 結合を使用してPostgreSQLの異なるテーブルのデータを結合する

    2. 各GROUPBY式には、外部参照ではない列が少なくとも1つ含まれている必要があります

    3. postgresqlでのROLLBACKイベントトリガー

    4. MySQLパフォーマンスチューニングに関する10の役立つヒント