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