Oracle Java:NLS_区域是否足以正确格式化数字?
在我的代码中,我有一个oracle连接,在该连接上执行以下操作:
stmt.executeUpdate("ALTER SESSION SET NLS_TERRITORY='GREECE'");
现在,如果我从我的表中选择一个数字,假设它的值是0,25
,带有
rs.getString(1)
我得到的是'0.25'
不是我所期望的'0,25'
我错过了什么
谢谢
编辑1强>
下面是sql语句:
select
value
from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS'
在我的会话内返回',.'
这意味着对于oracle,逗号用作十进制分隔符
当插入到表中时(应该是逗号),否则会引发异常,这一事实也证实了这一点
所以问题仍然是。。。为什么getString的行为是这样的
# 1 楼答案
这也许对你有帮助
检查此值。如果要使用“,”(0,25)更改如下参数
更改“,”和“.”秩序
# 2 楼答案
查询中的值是
NUMBER
,它作为NUMBER
传递给Java,并作为NUMBER
存储在结果集中。然后使用rs.getString()
以字符串形式获取数字Oracle和数据类型的转换无关,它都是Java内部的
产出:
如果希望Oracle格式化数字,则使用
TO_CHAR
格式化数字,以便将数字作为字符串而不是数字传递给Java