PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Добавете знак плюс/минус към число в PostgreSQL

В 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

В този случай числото е положително и така, използвайки моя локал, знакът плюс е поставен преди него.

Ето го отново, но с три стойности; положително, отрицателно и нула.

ИЗБЕРЕТЕ to_char(1, 'S9') КАТО "1", to_char(-1, 'S9') КАТО "-1", to_char(0, 'S9') КАТО "0"; 

Резултат:

<преди> 1 | -1 | 0 ----+----+---- +1 | -1 | +0

Пример за използване на SG

Ето същия пример с SG модел.

ИЗБЕРЕТЕ to_char(1, 'SG9') КАТО "1", to_char(-1, 'SG9') КАТО "-1", to_char(0, 'SG9') КАТО "0"; 

Резултат:

<преди> 1 | -1 | 0 ----+----+---- +1 | -1 | +0

Пример за използване на MI

Ето какво се случва, ако сменя SG с MI .

ИЗБЕРЕТЕ to_char(1, 'MI9') КАТО "1", to_char(-1, 'MI9') КАТО "-1", to_char(0, 'MI9') КАТО "0"; 

Резултат:

<преди> 1 | -1 | 0 ----+----+---- 1 | -1 | 0

Само отрицателното число получава знака минус. Положителното число и нулата нямат знак.

Пример за използване на PL

Ето изхода на моята система, когато използвам PL .

ИЗБЕРЕТЕ to_char(1, 'PL9') КАТО "1", to_char(-1, 'PL9') КАТО "-1", to_char(0, 'PL9') КАТО "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"; 

Резултат:

ГРЕШКА:„9“ трябва да е пред „PR“

SG срещу S

Може да сте забелязали, че примерите, използващи SG и S изглежда дават същия резултат и затова се чудя каква е разликата между тях.

Разликата е, че S е закотвен към номера, докато SG , MI , PL не са.

S също използва локала, така че действителният използван знак ще зависи от вашия локал.

Ето пример, който демонстрира разликата в закотвянето.

ИЗБЕРЕТЕ to_char(1, 'S999') КАТО "S", to_char(1, 'SG999') КАТО "SG"; 

Резултат:

<пред> S | SG ------+------ +1 | + 1

И ето какво се случва с увеличаването на броя.

ИЗБЕРЕТЕ to_char(1, 'S999') КАТО "S", to_char(1, 'SG999') КАТО "SG", to_char(10, 'S999') КАТО "S", to_char(10, 'SG999') AS "SG", to_char(100, 'S999') AS "S", to_char(100, 'SG999') AS "SG"; 

Резултат:

<пред> S | ДВ | S | ДВ | 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. PostgreSQL - задайте стойност на клетка по подразбиране според стойност на друга клетка

  2. Създаване на дъмп на база данни за конкретни таблици и записи Postgres

  3. Чист начин за използване на функциите на прозореца на postgresql в django ORM?

  4. Собственикът на базата данни на postgresql няма достъп до базата данни - Няма намерени връзки.

  5. Създаване на частичен уникален индекс с sqlalchemy на Postgres