oracle有没有判断一个字符串都是数字的函数呀
2 回答
青春有我
TA贡献1784条经验 获得超8个赞
oracle本身没有,得自定义一个函数
12345678910 | create or replace function isNumber(p in varchar2) return number is result number; begin result := to_number(p); return 1; exception when VALUE_ERROR then return 0; end ; |
调用
123 | select isNumber( 'abc123' ) from dual 或者 select isNumber( '123' ) from dual |
返回值为1,说明是数字,返回值是0,说明里边包含非数字的字符
九州编程
TA贡献1785条经验 获得超4个赞
用户oracle的正则函数regexp_instr就行了。
select regexp_instr('65','[1-9][0-9]?$') from dual ;
测试:
1234567891011121314151617 | sys@STARTREK> select regexp_instr( '65' , '[1-9][0-9]?$' ) from dual ; REGEXP_INSTR( '65' , '[1-9][0-9]?$' ) --------------------------------- 1 sys@STARTREK> select regexp_instr( '0' , '[1-9][0-9]?$' ) from dual ; REGEXP_INSTR( '0' , '[1-9][0-9]?$' ) -------------------------------- 0 sys@STARTREK> select regexp_instr( '1d' , '[1-9][0-9]?$' ) from dual ; REGEXP_INSTR( '1D' , '[1-9][0-9]?$' ) --------------------------------- 0 |
大于0表示为数字,等于0表示非数字。
- 2 回答
- 0 关注
- 1269 浏览
添加回答
举报
0/150
提交
取消