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

TO_Char-nummerformatmodel i Oracle

Husk, at du omdanner et tal til en streng. Nummeret har ikke nogen betydning af "," eller "." eller hvad som helst - det er et tal.

Tricket er at få TO_CHAR funktion til at konvertere det interne tal til den strengrepræsentation, du ønsker. Der er et par problemer at bekymre sig om:at få radix-punktet (decimal) korrekt og at håndtere udfyldning.

Her er et fungerende eksempel:

SELECT to_char(0.00235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

0,00235

SELECT to_char(156.45823,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

156,45823

SELECT to_char(-0.0235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

-0,0235

SELECT to_char(-156.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

-156,45623

SELECT to_char(123456789.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

123456789,45623

De relevante dele af masken:

FM bruges til at trimme førende og efterfølgende blanke, som Oracle normalt bruger til at udfylde tal.

D er radixpunktet, afhængigt af dine NLS-indstillinger.

NLS_NUMERIC_CHARACTERS ... er en tilsidesættelse af dine lokale NLS-indstillinger - dette er muligvis ikke nødvendigt, hvis din lokalitet bruger et komma for decimalen, men det er en måde, du kan gennemtvinge denne adfærd i en database med f.eks. nordamerikanske indstillinger.



  1. Hvordan man erklærer en variabel i en PostgreSQL-forespørgsel

  2. Postgres opdatering fra venstre join

  3. mySQL-forespørgsel mellem to datoer og to tidspunkter

  4. Oracle SQL PIVOT-tabel