to_number sql中的函数

时间:2011-11-29 12:26:12

标签: sql oracle oracle11g

我无法理解为什么跟随代码 SQL>

Select to_number('1234.64', '9999.9') from Dual;

返回这个数字1234.6?它是否像舍入,截断或?请帮助我理解这段代码,我知道to_number函数,我已经多次使用这段代码用于简单的字符,但这里不清楚任何事情

2 个答案:

答案 0 :(得分:1)

这看起来很像Oracle,但我怀疑在使用to_number的任何SQL中结果都是类似的。

to_number函数有两个参数:要转换为数字的字符串,以及转换的格式字符串。

在示例中,'12345.64'是要转换的字符串,而'9999.9'是格式字符串。在这种格式字符串中,9表示数字,而a表示数字。代表小数点。

因此该函数要求将字符串'12345.64'转换为小数点右边最多4位的数字,小数点后只有1位数。

第二个参数是可选的 - 在正常情况下,我会省略它。

答案 1 :(得分:0)

你应该使用

SELECT to_number('1234.64', '9999.99') from Dual;

你的面具告诉引擎你只想要一个小数,所以数字被四舍五入 如果您想获得确切的数字,请不要指定任何掩码:

SELECT to_number('1234.64') from Dual;