sql >> Databasteknik >  >> RDS >> Oracle

Hur fyller man ut nollor för ett nummerfält?

Om du vill ha värdet upp till tusendelar men inte mer av decimaldelen kan du multiplicera med 1000 och antingen FLOOR eller använd TRUNC . Så här:

SELECT TO_CHAR( TRUNC( value * 1000 ), '00000009' )
FROM   table_name;

eller:

SELECT LPAD( TRUNC( value * 1000 ), 8, '0' )
FROM   table_name;

Använder TO_CHAR kommer endast att tillåta ett inställt maximalt antal siffror baserat på formatmasken (om värdet går över denna storlek kommer det att visa # s istället för siffror) men den kommer att hantera negativa tal (placera minustecknet före de inledande nollorna).

Använder LPAD kommer att tillåta vilken storlek som helst på inmatningen men om inmatningen är negativ kommer minustecknet att vara i mitten av strängen (efter eventuella inledande nollor).



  1. Är användningen av SELECT COUNT(*) före SELECT INTO långsammare än att använda undantag?

  2. Hämta den senaste anteckningen (efter tidsstämpel) i en enda fråga från en 1:n-tabell

  3. Skapa en tabell i enanvändarläge i postgres

  4. ORA-21700:objektet finns inte eller är markerat för borttagning för Associative Array som indataparameter anropad från ODP.NET