Oracle to_char函数中FM的作用
-- 不带FM的格式
-- 不带FM的返回数据第一位永远是空格,且不占指定格式的位数
-- 0:无非0数字则用0补充,超过指定格式长度则返回#
SELECT to_char(0, '00000.000') FROM dual; -- 空格+00000.000
SELECT to_char(10, '00000.000') FROM dual; -- 空格+00010.000
SELECT to_char(010.10, '00000.000') FROM dual; -- 空格+00010.100
SELECT to_char(111010.10, '00000.000') FROM dual; -- ##########
-- 9:非零数字前的0用空格代替,不带FM的仅小数点前的起作用
SELECT to_char(0.10, '99999.999') FROM dual; -- 空格+五个空格+.100
SELECT to_char(0, '99999.999') FROM dual; -- 空格+五个空格+.000
SELECT to_char(10, '99999.999') FROM dual; -- 空格+三个空格+10.000
SELECT to_char(010.10, '99999.999') FROM dual; -- 空格+三个空格+10.100
-- 带FM的格式
-- FM:移除因9带来的空格和0
-- fm00000.000和00000.000的效果差不多,只是没有空格
SELECT to_char(10, 'fm00000.000') FROM dual; -- 00010.000
SELECT to_char(010.10, 'fm00000.000') FROM dual; -- 00010.100
-- 9先把前后0转换成空格,FM再移除空格
SELECT to_char(0.10, 'fm99999.999') FROM dual; -- .1
SELECT to_char(0, 'fm99999.999') FROM dual; -- 0.
SELECT to_char(10, 'fm99999.999') FROM dual; -- 10.
SELECT to_char(010.10, 'fm99999.999') FROM dual; -- 10.1