gpt4 book ai didi

oracle - 十进制的 NLS_NUMERIC_CHARACTERS 设置

转载 作者:行者123 更新时间:2023-12-03 01:24:23 29 4
gpt4 key购买 nike

我在测试机器上设置了一个数据库,在生产机器上设置了第二个数据库。当我运行时:

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com