我无法理解为什么跟随代码 SQL>
Select to_number('1234.64', '9999.9') from Dual;
返回这个数字1234.6?它是否像舍入,截断或?请帮助我理解这段代码,我知道to_number函数,我已经多次使用这段代码用于简单的字符,但这里不清楚任何事情
答案 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;