2009-10-20 8 views
2

Hai,format de nombre dans oracle

J'ai un problème avec le format numérique. J'utilise oracle. J'ai un champ de nombre dans la base de données.Mais quand je le récupère je dois être vu comme le nombre à virgule flottante Par exemple: tout en retreiveing, maintenant j'ai obtenu le résultat comme 200 DR (DR pour Debit, il est donné manuellement). Maintenant, j'ai besoin d'obtenir le résultat 200,00 DR comme résultat. Comment puis-je résoudre ce problème? Quelqu'un peut-il m'aider?

Répondre

3

Vous pouvez utiliser la fonction TO_CHAR pour formater explicitement données:

SQL> SELECT to_char(200.00, 'fm999G999G990D00') FROM dual; 

TO_CHAR(200.00,'FM999G999G990D 
------------------------------ 
200.00 
+0

vos points de lien vers la version « de caractère à caractère » de to_char(). Pour les conversions numériques, la version "du nombre au caractère" serait plus appropriée. Surtout en raison du lien vers les modèles de format: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions181.htm#i79330 –

+0

@jhartelt: merci j'ai corrigé le lien –

2

Utilisez TO_CHAR comme ceci:

to_char(number,'999999.99') 

Par exemple:

SQL> select to_char(1234.5678,'999999.99')||' DR' as display from dual; 

DISPLAY 
------------- 
    1234.57 DR 
1

Les réponses ici qui a suggéré TO_CHAR sont corrects, mais si vous appelez ce SQL à partir du code de l'application:

Obtenez le numéro sans le formater avec le code SQL, puis utilisez votre langage de programmation pour le formater. Par exemple, en Java, utilisez la classe DecimalFormat. En d'autres termes, laissez la mise en forme pour le code spécifique à l'application, pas pour le code SQL.

1

Les caractères supplémentaires peuvent être spécifiés dans le cadre de la conversion en les enfermant dans des guillemets doubles, ce qui pourrait rendre les choses un peu plus simple:

To_Char(amount,'fm999G999G990D00" DR"') 
2

La présence d'un débit implique la nécessité d'un crédit . Dans Oracle SQL, nous pouvons utiliser la fonction SIGN() de dire si un nombre est positif ou négatif ...

SQL> select to_char(abs(amt), 'fm999g999d00')||' ' 
    2    ||case when sign(amt) = -1 then 'DR' else 'CR' end as fmt_amt 
    3 from transactions 
    4 order by txn_ts, txn_id 
    5/

FMT_AMT 
-------------- 
200.00 CR 
200.00 DR 
788.67 CR 
788.67 DR 

SQL> 
Questions connexes