V PostgreSQL můžete použít to_char()
pro výstup čísla v určitém formátu, včetně znaménka plus nebo mínus, které označují, zda se jedná o kladné nebo záporné číslo.
Chcete-li to provést, použijte jeden z S
, MI
, PL
nebo SG
ve vašem formátovacím řetězci.
Další možností je použít PR
za účelem uzavření jakýchkoli záporných hodnot do lomených závorek.
Vzory šablon pro čísla se znaménkem
Následující vzory šablon lze použít k použití příslušného znaku na číslo.
Vzor | Popis |
---|---|
MI | Znaménko mínus na zadané pozici (pokud je číslo <0). |
PL | Znaménko plus na zadané pozici (pokud číslo> 0). |
SG | Znaménko plus nebo mínus na zadané pozici v závislosti na tom, zda je číslo kladné nebo záporné. |
S | Znamení ukotveno k číslu (používá národní prostředí). |
PR | Toto uzavírá všechny záporné hodnoty do lomených závorek. |
Všimněte si, že MI
, PL
nebo SG
jsou rozšíření Postgres (nejsou to standardní SQL).
Příklad pomocí S
Zde je příklad demonstrující S
vzor.
SELECT to_char(1, 'S9');
Výsledek:
+1
V tomto případě je číslo kladné, a tak při použití mého národního prostředí je k němu připojeno znaménko plus.
Tady je to znovu, ale se třemi hodnotami; kladné, záporné a nulové.
SELECT
to_char(1, 'S9') AS "1",
to_char(-1, 'S9') AS "-1",
to_char(0, 'S9') AS "0";
Výsledek:
1 | -1 | 0 ----+----+---- +1 | -1 | +0
Příklad pomocí SG
Zde je stejný příklad s SG
vzor.
SELECT
to_char(1, 'SG9') AS "1",
to_char(-1, 'SG9') AS "-1",
to_char(0, 'SG9') AS "0";
Výsledek:
1 | -1 | 0 ----+----+---- +1 | -1 | +0
Příklad pomocí MI
Zde je to, co se stane, když vyměním SG
s MI
.
SELECT
to_char(1, 'MI9') AS "1",
to_char(-1, 'MI9') AS "-1",
to_char(0, 'MI9') AS "0";
Výsledek:
1 | -1 | 0 ----+----+---- 1 | -1 | 0
Pouze záporné číslo dostane znaménko mínus. Kladné číslo a nula nemají žádné znaménko.
Příklad pomocí PL
Zde je výstup na mém systému, když používám PL
.
SELECT
to_char(1, 'PL9') AS "1",
to_char(-1, 'PL9') AS "-1",
to_char(0, 'PL9') AS "0";
Výsledek:
1 | -1 | 0 -----+-----+----- + 1 | -1 | + 0
Příklad použití PR
Zde je výstup na mém systému, když používám PR
.
SELECT
to_char(1, '9PR') AS "1",
to_char(-1, '9PR') AS "-1",
to_char(0, '9PR') AS "0";
Výsledek:
1 | -1 | 0 -----+-----+----- 1 | <1> | 0
Všimněte si, že PR
musí přijít po 9
.
Zde je to, co se stane, když to zkusím vložit před 9
:
SELECT
to_char(1, 'PR9') AS "1",
to_char(-1, 'PR9') AS "-1",
to_char(0, 'PR9') AS "0";
Výsledek:
ERROR: "9" must be ahead of "PR"
SG versus S
Možná jste si všimli, že příklady používající SG
a S
Zdá se, že výsledkem je stejný výsledek, a proto se ptáte, jaký je mezi nimi rozdíl.
Rozdíl je v tom, že S
je ukotven k číslu, zatímco SG
, MI
, PL
nejsou.
S
také používá národní prostředí, takže skutečný použitý znak bude záviset na vašem národním prostředí.
Zde je příklad, který ukazuje rozdíl v ukotvení.
SELECT
to_char(1, 'S999') AS "S",
to_char(1, 'SG999') AS "SG";
Výsledek:
S | SG ------+------ +1 | + 1
A tady je to, co se stane, když číslo roste.
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";
Výsledek:
S | SG | S | SG | S | SG ------+------+------+------+------+------ +1 | + 1 | +10 | + 10 | +100 | +100