oracle中to_number函数,使用了如何将字符串开头的0补省略?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中to_number函数,使用了如何将字符串开头的0补省略?相关的知识,希望对你有一定的参考价值。

SELECT substr('DF5811C4A0036', 1, 9)||(to_number(substr('DF5811C4A0036', -4, 4)) + 1) FROM DUAL;中让查询出的结果为DF5811C4A0037.或者是用其他的方法能实现加一的效果? 多谢!!

SELECT substr(\'DF5811C4A0036\', 1, 9)||trim(to_char((to_number(substr(\'DF5811C4A0036\', -4, 4)) + 1), \'0000\') ) FROM DUAL;

oracle中to number函数是将一个字符串转换为数字数据类型,使用格式为
TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER。
参考技术A 改成这样就行了:
....|| to_char((to_number(substr('DF5811C4A0036', -4, 4)) + 1), '0000') from.....追问

可是这种方式最终的结果是DF5811C4A 0037,多了个空格。 有没有办法取消掉这个空格??

追答

再加个trim()函数就可以了。
trim(to_char((to_number(substr('DF5811C4A0036', -4, 4)) + 1), '0000') )

本回答被提问者和网友采纳

Oracle中使用to_number()函数,里面有文字怎么解决

你好!
你可以通过过滤,把有文字的数据过滤掉!
文字过滤的话,可能需要用到正则表达式了!
如果不会的话,采纳本问题,新开设问题提问一下!
给你解决!
望采纳!
参考技术A 首先你得确认本应出现数字的地方字母是不是正常情况,如果是,要按照什么规则把字母处理成数字,比如字母a替换为1,b替换为2等等,如果不是,那就需要异常捕获了,对出现字母的情况进行异常处理,比如出现字母视为异常情况。视为0。 参考技术B 因为"9"代表任意一个数字(可以是0—9中任意一个数字),而"0 "只是表示在返回结果的前面或后面补0来达到格式中指定的长度。

以上是关于oracle中to_number函数,使用了如何将字符串开头的0补省略?的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE中to_char、to_date、trunc、to_number、cast函数

oracle 将字符型转换为数值型

oracle sql字符串转数字问题

用S-function函数如何将十六进制转换十进制

Oracle中to_number函数格式参数问题

oracle中cast的写法请教