Oracle将字符串转换为数字
最近用到了将Oracle数据库中某个字符类型的字段值转换为数字并保存至另一个新字段,Oracle自带有ToNumber函数,但需要说明的是这个函数只能转换字符串格式是正确数字的情况,也就是一旦字符串为空,或者有特殊字符,或者有空格等等,都会抛错,以下提供一种方式成功解决以上问题:
TO_NUMBER(decode(decode(lower(nvl(replace(translate(strTargetField, '$%', ' '),' ',''),0)),upper(nvl(replace(translate(strTargetField, '$%', ' '),' ',''),0)),1,0),1,nvl(replace(translate(strTargetField, '$%', ' '),' ',''),0),0)) numResult
需要指出的是,在nvl函数里还用了translate函数来替换指定的特殊字符,因为我的这个例子中的字段有可能包含有百分号获美元符号,对于这类字符我也认为是正确的值,所以需要先过滤掉这些符号然后再对剩下的部分进行数字转换。
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20