- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在测试机器上设置了一个数据库,在生产机器上设置了第二个数据库。当我运行时:
select to_number('100,12') from dual
然后在测试机上就报错了。然而,这个语句在生产机器上工作得很好。
现在,当我检查 NLS_NUMERIC_CHARACTERS 时,我会在两台机器中看到“,”(逗号)。我还应该在其他地方寻找小数设置吗?
干杯!
最佳答案
您可以通过查询nls_session_parameters
来查看当前的 session 设置:
select value
from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS';
VALUE
----------------------------------------
.,
这可能与数据库默认值不同,您可以在nls_database_parameters
中看到。
在此 session 中您的查询错误:
select to_number('100,12') from dual;
Error report -
SQL Error: ORA-01722: invalid number
01722. 00000 - "invalid number"
我可以直接使用alter session
来更改我的 session ,或者通过确保我的客户端配置方式能够实现字符串所需的设置(它可能是从操作系统或Java继承的)例如,语言环境):
alter session set NLS_NUMERIC_CHARACTERS = ',.';
select to_number('100,12') from dual;
TO_NUMBER('100,12')
-------------------
100,12
在 SQL Developer 中,您可以在“工具”->“首选项”->“数据库”->“NLS”中设置您的首选值。
但我也可以覆盖该 session 设置作为查询的一部分,并将可选的第三个 nlsparam 参数设置为 to_number()
;尽管这使得可选的第二个 fmt 参数也是必需的,所以您需要能够选择合适的格式:
alter session set NLS_NUMERIC_CHARACTERS = '.,';
select to_number('100,12', '99999D99', 'NLS_NUMERIC_CHARACTERS='',.''')
from dual;
TO_NUMBER('100,12','99999D99','NLS_NUMERIC_CHARACTERS='',.''')
--------------------------------------------------------------
100.12
默认情况下,结果仍然与我的 session 设置一起显示,因此小数点分隔符仍然是句点。
关于oracle - 十进制的 NLS_NUMERIC_CHARACTERS 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571355/
我在测试机器上设置了一个数据库,在生产机器上设置了第二个数据库。当我运行时: select to_number('100,12') from dual 然后在测试机上就报错了。然而,这个语句在生产机器
我有一个 varchar2我需要转换为 number 的列 格式如下: +000000000000030203.38 数据库级别:NLS_NUMERIC_CHARACTERS = ., session
我试图在 PL/SQL 中找到一种有效、通用的方法来将字符串转换为数字,其中 NLS_NUMERIC_CHARACTERS 设置的本地设置是不可预测的——我最好不要碰它。输入格式是编程标准“123.4
我是一名优秀的程序员,十分优秀!