[英]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.