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

PostgreSQLの数値の前にプラス/マイナス記号を付ける

    PostgreSQLでは、to_char()を使用できます 数値を特定の形式で出力します。これには、正の数か負の数かを示すプラスまたはマイナス記号が含まれます。

    これを行うには、Sのいずれかを使用します 、MIPL 、またはSG フォーマット文字列で。

    別のオプションは、PRを使用することです 負の値を山括弧で囲むため。

    符号付き数値のテンプレートパターン

    次のテンプレートパターンを使用して、番号に適切な符号を適用できます。

    パターン 説明
    MI 指定された位置のマイナス記号(数値が0未満の場合)。
    PL 指定された位置にプラス記号を入力します(数値が0より大きい場合)。
    SG 数値が正か負かに応じて、指定された位置にプラスまたはマイナス記号が表示されます。
    S 番号に固定された記号(ロケールを使用)。
    PR これは、すべての負の値を山括弧で囲みます。

    MIに注意してください 、PL 、またはSG Postgres拡張機能です(標準のSQLではありません)。

    Sを使用した例

    Sを示す例を次に示します。 パターン。

    SELECT to_char(1, 'S9');

    結果:

    +1

    この場合、数値は正であるため、私のロケールを使用すると、プラス記号が付加されます。

    ここでもそうですが、3つの値があります。正、負、ゼロ。

    SELECT 
      to_char(1, 'S9') AS "1",
      to_char(-1, 'S9') AS "-1",
      to_char(0, 'S9') AS "0";

    結果:

     1  | -1 | 0  
    ----+----+----
     +1 | -1 | +0

    SGの使用例

    SGの同じ例を次に示します。 パターン。

    SELECT 
      to_char(1, 'SG9') AS "1",
      to_char(-1, 'SG9') AS "-1",
      to_char(0, 'SG9') AS "0";

    結果:

     1  | -1 | 0  
    ----+----+----
     +1 | -1 | +0

    MIの使用例

    SGを交換するとどうなりますか MIを使用 。

    SELECT 
      to_char(1, 'MI9') AS "1",
      to_char(-1, 'MI9') AS "-1",
      to_char(0, 'MI9') AS "0";

    結果:

     1  | -1 | 0  
    ----+----+----
      1 | -1 |  0

    負の数のみがマイナス記号を取得します。正の数とゼロには符号がありません。

    PLを使用した例

    PLを使用した場合のシステムの出力は次のとおりです。 。

    SELECT 
      to_char(1, 'PL9') AS "1",
      to_char(-1, 'PL9') AS "-1",
      to_char(0, 'PL9') AS "0";

    結果:

      1  | -1  |  0  
    -----+-----+-----
     + 1 |  -1 | + 0

    PRの使用例

    PRを使用したときのシステムの出力は次のとおりです 。

    SELECT 
      to_char(1, '9PR') AS "1",
      to_char(-1, '9PR') AS "-1",
      to_char(0, '9PR') AS "0";

    結果:

      1  | -1  |  0  
    -----+-----+-----
      1  | <1> |  0 

    PRに注意してください に来る必要があります 9

    9の前に配置しようとするとどうなりますか :

    SELECT 
      to_char(1, 'PR9') AS "1",
      to_char(-1, 'PR9') AS "-1",
      to_char(0, 'PR9') AS "0";

    結果:

    ERROR:  "9" must be ahead of "PR"

    SG対S

    SGを使用した例に気づいたかもしれません。 およびS 同じ結果を出力しているように見えるので、それらの違いは何でしょうか。

    違いは、S SGが番号に固定されているのに対し、 、MIPL そうではありません。

    S ロケールも使用するため、実際に使用される記号はロケールによって異なります。

    アンカーの違いを示す例を次に示します。

    SELECT 
      to_char(1, 'S999') AS "S",
      to_char(1, 'SG999') AS "SG";

    結果:

      S   |  SG  
    ------+------
       +1 | +  1

    そして、数が増えると次のようになります。

    SELECT 
      to_char(1, 'S999') AS "S",
      to_char(1, 'SG999') AS "SG",
      to_char(10, 'S999') AS "S",
      to_char(10, 'SG999') AS "SG",
      to_char(100, 'S999') AS "S",
      to_char(100, 'SG999') AS "SG";

    結果:

      S   |  SG  |  S   |  SG  |  S   |  SG  
    ------+------+------+------+------+------
       +1 | +  1 |  +10 | + 10 | +100 | +100

    1. PostgreSQL 8.4は、すべてのテーブルに対するDML特権をロールに付与します

    2. SQLite SUM

    3. MySQLレプリケーション:GTIDベースのレプリケーションでの誤ったトランザクション

    4. MSSQLServerのクロステーブル制約