sql >> Database teknologi >  >> RDS >> Oracle

Sådan formateres tal med et minus/plus-log i Oracle

Når du bruger TO_CHAR() funktion til at formatere et tal i Oracle Database, kan du bruge S formater element for at returnere dets fortegn (dvs. et plustegn for positive værdier og et minustegn for negative værdier).

Du kan også bruge MI formater element for at returnere negative værdier med et efterfølgende negativt fortegn og positive værdier med et efterfølgende blankt tegn.

Eksempel på S Formater element

Her er et eksempel til at demonstrere S formatelement:

SELECT 
    TO_CHAR(-7, 'S9') AS "Negative",
    TO_CHAR(7, 'S9') AS "Positive"
FROM DUAL;

Resultat:

   Negative    Positive 
___________ ___________ 
-7          +7         

S formatelement kan alternativt anvendes på den sidste position af formatmodellen. Dette resulterer i, at tegnet føjes til resultatet:

SELECT 
    TO_CHAR(-7, '9S') AS "Negative",
    TO_CHAR(7, '9S') AS "Positive"
FROM DUAL;

Resultat:

   Negative    Positive 
___________ ___________ 
7-          7+         

Men S formatelementet kan ikke vises i begge ender af formatmodellen. Hvis den gør det, opstår der en fejl:

SELECT TO_CHAR(7, 'S9S')
FROM DUAL;

Resultat:

Error report -
ORA-01481: invalid number format model

MI Formater element

MI formatelement et efterfølgende negativt tegn i tilfælde, hvor tallet er negativt, og et efterfølgende blankt tegn, hvor det er positivt:

SELECT 
    TO_CHAR(-7, '9MI') AS "Negative",
    TO_CHAR(7, '9MI') AS "Positive"
FROM DUAL;

Resultat:

   Negative    Positive 
___________ ___________ 
7-          7          

Bemærk, at MI formatelement kan kun vises i den sidste position i formatmodellen. Hvis den er i en anden position, opstår der en fejl:

SELECT TO_CHAR(7, 'MI9')
FROM DUAL;

Resultat:

Error report -
ORA-01481: invalid number format model

  1. Skal hver SQL Server-fremmednøgle have et matchende indeks?

  2. Django + Postgres + Large Time Series

  3. 10 effektive måder at være mere produktiv på på arbejdspladsen

  4. MYSQL ORDER BY CASE Problem