希望有人能提供帮助。
我正在尝试向我的查询添加||'m'
,但是当我添加concat时,它会删除前导零。
没有||'m'
,我得到了这个结果:
0.00
以concat为例,我得到了这个结果:
.0m
编辑: 这是查询:
round(MAX(city_longitude),1) - round(MIN(city_longitude),1)||'m'
干杯
答案 0 :(得分:7)
尝试将整个ROUND
语句包装在TO_CHAR
中,为其指定格式掩码。
TO_CHAR(round(MAX(city_longitude),1) - round(MIN(city_longitude),1), '0.00')||'m'
这样,您可以有效地将字符串与字符串连接起来,而您当前正在使用字符串连接数字,从而强制进行隐式转换。
隐含的转换通常不受欢迎,因为它们可能会导致意外的结果。
Oracle说:
Oracle建议您指定显式转换,而不是 依赖于隐式或自动转换,原因如下:
•使用explicit时,SQL语句更容易理解 数据类型转换函数。
•隐式数据类型转换会对其产生负面影响 性能,特别是在转换列值的数据类型时 对于常数而不是相反的方式。
•隐式转换取决于它发生的上下文和 在每种情况下可能不会以相同的方式工作。例如,隐含的 从datetime值到VARCHAR2值的转换可能会返回 意外的年份取决于NLS_DATE_FORMAT的值 参数。
•隐式转换的算法可能会发生变化 软件版本和Oracle产品之间。显性行为 转换更容易预测。
数字格式在这里: http://www.oradev.com/oracle_number_format.jsp
希望它有所帮助...