PostgreSQLでは、to_char()を使用できます 数値を特定の形式で出力します。これには、正の数か負の数かを示すプラスまたはマイナス記号が含まれます。
これを行うには、Sのいずれかを使用します 、MI 、PL 、または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が番号に固定されているのに対し、 、MI 、PL そうではありません。
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