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 關注
- 1299 瀏覽
添加回答
舉報
0/150
提交
取消