工作中碰到需要把数值类型的金额转换成字符串类型,网上没有找到合适的答案,有的没有考虑"-"号,有的没有考虑"0.12"或"12.0"这种情况,所以自己写了一个,拿出来和大家研究一下。虽然看着比较花眼,但是还是管用滴 :)
select
(case when
substr(cast(colA as char(30)),1,1)='-' then
'-'||replace(rtrim(ltrim(replace(replace(replace(replace(cast(colA as char(30)),'-',''),'0',' '),' .','0.'),'. ','.0'))),' ','0')
else
replace(rtrim(ltrim(replace(replace(replace(cast(colA as char(30)),'0',' '),' .','0.'),'. ','.0'))),' ','0') end) result
from tableA;