如何使用具有固定小数点字符的 TO_NUMBER 函数在 Oracle 中将字符串转换为数字?
我需要在过程中从 string
转换为 decimal
,并使用固定的小数分隔符 .
独立于区域性设置。接下来,我知道 .
之后的小数位数仅限于 6 位小数,而 .
之前的位数没有限制。使用 Oracle 文档及其格式字符串示例,我现在有了这个解决方案:
v_number := TO_NUMBER(v_string, '9999999999999999999999999999999999D999999', 'NLS_NUMERIC_CHARACTERS = ''. ''');
D
之前的 9
字符数是允许的最大数量。我发现这个格式字符串非常糟糕。对于这种一般转换,是否有更好的格式字符串或省略函数第二个参数的方法?一般来说,我只需要传递给函数 NLS 参数来告诉它我只想用小数分隔符 .
进行转换,但在这种情况下第二个参数也是必需的。
I need to convert in procedure from string
to decimal
with fixed decimal separator .
independant on culture settings. Next, I know decimal number is limited just with 6 decimal places after .
and there is no limitiation on number of digits before .
. Using Oracle documentation and its examples for format strings I have now just this solution:
v_number := TO_NUMBER(v_string, '9999999999999999999999999999999999D999999', 'NLS_NUMERIC_CHARACTERS = ''. ''');
Number of 9
chars before D
is maximum number allowed. I find this format string as pretty awful. Is there any better format string for this general conversion or some way to omit second parameter of function? In general I just need to pass to function NLS parameter to tell it i just want to convert with decimal separator .
, but second parameter is mandatory in that case as well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您不能使用第三个参数而不是第二个参数来调用
to_number
函数。我建议将“丑陋”的格式字符串放入包常量中,然后忘记它。您还可以使用
dbms_session.set_nls< /code>
修改您的 NLS 设置并能够使用不带参数的
to_number
。You can't call the
to_number
function with the third parameter and not the second. I would suggest putting the "ugly" format string in a package constant and forget about it.You could also use
dbms_session.set_nls
to modify your NLS settings and be able to useto_number
without arguments.处理逗号和句号。
Handles both comma and period.