2010-11-26 81 views
3

当我使用PHP OCI从Oracle数据库执行提取操作时,小于1的数字显示为.XXXXXX,.249999。有没有办法将此设置为0.XXXXXX或任何其他格式,而不修改每个查询以明确使用to_char()? (?也许通过一些会话参数)PHP OCI,Oracle和默认数字格式

回答

0

没有办法做你在全球范围内要求修改php/oci-extension源代码的东西。这种行为的原因是因为oracle oci在结果中省略了0,并且php根据列数据类型将所有结果从oci转换为字符串,而不执行任何转换。即使SQL * Plus中的结果默认为0,也必须使用set numformat调用SQL * Plus格式来自定义列格式并预置0。

当前没有可以设置更改此行为的alter session参数。

解决此问题的最常见方法是在查询周围使用包装并检查数字列与is_numeric,然后使用number_formatsprintf格式化数值列值。希望你的应用程序已经使用了股票php oci函数的包装,所以你可以在一个位置进行更改。

2

使用PHP,你可以轻松地添加0,通过转换为浮动:

$a = '.249999'; 
echo (float) $a; 

这意味着你可以通过

$row['number'] = (float) $row['number']; 

转换你的电话号码获取之后来自DB。

+0

感谢您的回答,但我正在寻找一种方法在全球范围内进行更改。我们有很多需要更改的查询,这会花费太多精力。 – Dario 2010-11-26 11:11:21