PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dołącz znak plus/minus do liczby w PostgreSQL

W PostgreSQL możesz użyć to_char() wyprowadzić liczbę w określonym formacie, w tym ze znakiem plus lub minus, aby wskazać, czy jest to liczba dodatnia, czy ujemna.

Aby to zrobić, użyj jednego z S , MI , PL lub SG w ciągu formatu.

Inną opcją jest użycie PR aby ująć wartości ujemne w nawiasach ostrych.

Wzorce szablonów dla podpisanych numerów

Poniższe wzory szablonów mogą być użyte do nałożenia odpowiedniego znaku na numer.

Wzór Opis
MI Znak minus w określonej pozycji (jeśli liczba <0).
PL Znak plus w określonej pozycji (jeśli liczba> 0).
SG Znak plus lub minus w określonej pozycji, w zależności od tego, czy liczba jest dodatnia czy ujemna.
S Podpisz zakotwiczony do numeru (używa ustawień regionalnych).
PR Zawiera wszelkie ujemne wartości w nawiasach ostrych.

Zwróć uwagę, że MI , PL lub SG są rozszerzeniami Postgresa (nie są standardowym SQL).

Przykład przy użyciu S

Oto przykład demonstrujący S wzór.

SELECT to_char(1, 'S9');

Wynik:

+1

W tym przypadku liczba jest dodatnia, więc przy użyciu moich ustawień regionalnych dodawany jest znak plus.

Oto znowu, ale z trzema wartościami; dodatni, ujemny i zero.

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

Wynik:

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

Przykład użycia SG

Oto ten sam przykład z SG wzór.

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

Wynik:

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

Przykład użycia MI

Oto, co się stanie, jeśli zamienię SG z MI .

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

Wynik:

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

Tylko liczba ujemna otrzymuje znak minus. Liczba dodatnia i zero nie mają żadnego znaku.

Przykład użycia PL

Oto dane wyjściowe w moim systemie, gdy używam PL .

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

Wynik:

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

Przykład użycia PR

Oto dane wyjściowe w moim systemie, gdy używam PR .

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

Wynik:

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

Zwróć uwagę, że PR musi przyjść po 9 .

Oto, co się stanie, jeśli spróbuję umieścić go przed 9 :

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

Wynik:

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

SG kontra S

Być może zauważyłeś, że przykłady z użyciem SG i S wydają się wyświetlać ten sam wynik, dlatego zastanawiam się, jaka jest między nimi różnica.

Różnica polega na tym, że S jest zakotwiczony do numeru, podczas gdy SG , MI , PL nie są.

S używa również ustawień regionalnych, więc rzeczywisty używany znak będzie zależał od ustawień regionalnych.

Oto przykład, który pokazuje różnicę w zakotwiczeniu.

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

Wynik:

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

A oto, co się dzieje, gdy liczba rośnie.

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";

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj kolumnę tabeli o kolumnę innej tabeli w PostgreSQL

  2. Usługa bazy danych PostgreSQL

  3. Postgres:BŁĄD:plan w pamięci podręcznej nie może zmieniać typu wyniku

  4. Czy można wyłączyć przetwarzanie ofert w poleceniu Postgres COPY w formacie CSV?

  5. Jak zezwolić na zdalny dostęp do bazy danych PostgreSQL