Lorsque j'exécute une extraction à partir d'une base de données Oracle à l'aide de PHP OCI, les nombres inférieurs à 1 sont affichés comme suit: .XXXXXX,
. .249999
. Y at-il un moyen de définir ceci à 0.XXXXXX
ou à tout autre format, sans modifier chaque requête pour utiliser to_char()
explicitement? (? Peut-être par certains paramètres de session)PHP OCI, Oracle et le format de nombre par défaut
Répondre
Il n'y a aucun moyen de faire ce que vous demandez globalement à court de modifier le code source php/oci-extension. La raison de ce comportement est que oracle oci omet les 0 dans les résultats et php convertit tous les résultats des oci en chaînes sans effectuer de conversion en fonction du type de données de la colonne. Même les résultats dans SQL * Plus omettent 0 par défaut et la mise en forme SQL * Plus doit être appelée avec set numformat
pour personnaliser la mise en forme des colonnes et ajouter des 0 au préfixe.
Il n'existe actuellement aucun paramètre alter session que vous pouvez définir pour modifier ce comportement. La manière la plus courante de contourner ce problème consiste à utiliser un wrapper autour de vos requêtes et à rechercher des colonnes numériques avec is_numeric
, puis à mettre en forme les valeurs de colonnes numériques avec number_format
ou sprintf
. Espérons que votre application utilise déjà un wrapper autour des fonctions de stock php oci afin que vous puissiez effectuer le changement en un seul endroit.
En utilisant PHP, vous pouvez facilement ajouter 0, en convertissant flotter:
$a = '.249999';
echo (float) $a;
qui signifie que vous pouvez convertir votre numéro par
$row['number'] = (float) $row['number'];
après l'aller chercher de la DB.
- 1. problème avec php + oracle (OCI)
- 2. Long temps d'attente entre PHP et Oracle OCI
- 3. Oracle - délai de requête OCI
- 4. format de nombre dans oracle
- 5. Détection d'une colonne avec une valeur par défaut à l'aide de l'interface d'appel Oracle (OCI)
- 6. Détection du nombre de lignes ORACLE mises à jour par un appel OCI OCIStmtExecute
- 7. Création d'un déclencheur Oracle OCI
- 8. Oracle Valeurs par défaut
- 9. Oracle OCI: requête avec champ Date
- 10. Définir le format DateTime par défaut C#
- 11. Pilote léger Oracle vs pilote OCI. Avantages et inconvénients?
- 12. format de chaîne par défaut dans Silverlight
- 13. Nombre décimal, to_char et Oracle
- 14. PHP et Oracle utilisant un pilote léger
- 15. Oracle SELECT: nombre d'événements par équipe et par an
- 16. format le nombre
- 17. Comment changer NLS_DATE_FORMAT par défaut pour le client Oracle jdbc
- 18. Tomcat Servlet Format de date par défaut
- 19. WP_Query nombre de messages par défaut
- 20. php valeur par défaut et non-objet
- 21. ORACLE 11g case insensible par défaut
- 22. Problème avec la requête d'insertion usjng OCI (C++) dans ORACLE
- 23. Comment changer le format par défaut en XML dans Symfony?
- 24. Spécification d'un format d'exportation par défaut pour le CrystalReportViewer
- 25. Comment changer le format par défaut dans StringToDate? Spring WebFlow
- 26. Retour d'un 'paquet DESC' en PHP utilisant OCI
- 27. Oracle - Nombre de varchar
- 28. Format de conversion de l'heure à l'heure par défaut
- 29. Oracle requête SQL pour afficher le nombre d'événements par jour et le nombre total d'événements pour sept derniers jours
- 30. Chaîne de connexion OCI ... besoin d'aide
Merci pour la réponse, mais je cherche un moyen de le changer globalement. Nous avons beaucoup de questions qui devraient être changées, et ce serait trop d'effort. – Dario