繁体   English   中英

在要在Oracle数据库的任何本地化版本中运行的脚本中,强制逗号为小数点分隔符

[英]Forcing the comma to be the decimal separator in a script meant to run on any localization of the Oracle database

我想为数字转换设置格式掩码,以便无论会话中设置了什么,都将逗号“作为”始终作为小数点分隔符。 换句话说,我的目的是强制这种格式掩码始终在Oracle数据库的任何本地化中获胜。

我的会议已经开始

NLS_NUMERIC_CHARACTERS=',.'

当我发出这些命令时,我得到:

SELECT TO_CHAR( 100.34,'fm099999999999999D00') FROM DUAL;
000000000000100,34 -- as desired

SELECT TO_CHAR( 100.34,'fm099999999999999.00') FROM DUAL;
000000000000100,34 -- as desired

SELECT TO_CHAR( 100.34,'fm099999999999999,00') FROM DUAL;
000000000000001,00 -- NOT What I want!! because ',' is for thousands

有没有一种方法可以在不更改当前会话的情况下将“逗号”强制为“十进制分隔符”?

使用第一个格式掩码,其中D代表十进制分隔符,然后将NLS_NUMERIC_CHARACTER作为显式的最后一个参数传递给TO_CHAR:

SQL> SELECT TO_CHAR( 100.34,'fm099999999999999D00') FROM DUAL;

TO_CHAR(100.34,'FM0
-------------------
000000000000100.34

1 row selected.

Elapsed: 00:00:00.15
SQL> SELECT TO_CHAR( 100.34,'fm099999999999999D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

TO_CHAR(100.34,'FM0
-------------------
000000000000100,34

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM