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函数来替换指定的特殊字符,因为我的这个例子中的字段有可能包含有百分号获美元符号,对于这类字符我也认为是正确的值,所以需要先过滤掉这些符号然后再对剩下的部分进行数字转换。