在Oracle中,如何判斷一個字串是否為數字?
在Oracle中,如何判斷一個字串是否為數字?
可以有2種辦法來判斷,第一種辦法為REPLACE加TRANSLATE函式,在程式中可以直接使用“TRANSLATE(REPLACE('入參','.',''),'/1234567890','/') IS NULL”來判斷入參為數字,缺點是,若入參有2個小數點或含有加減號則不能判斷。第二種辦法為使用TO_NUMBER或REGEXP_LIKE來自定義函式進行判斷。
第一種辦法示例:
SYS@PROD1> SELECT
2 NVL2(TRANSLATE(REPLACE('12','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE,
3 NVL2(TRANSLATE(REPLACE('12.34','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE2,
4 NVL2(TRANSLATE(REPLACE('12.Mabcd','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE3
5 FROM DUAL;
IN_TYP IN_TYP IN_T
------ ------ ----
NUMBER NUMBER CHAR
第二種辦法示例:
1. 利用 to_number
CREATE OR REPLACE FUNCTION ISNUMERIC(STR IN VARCHAR2) RETURN NUMBER IS
V_STR FLOAT;
BEGIN
IF STR IS NULL THEN
RETURN 0;
ELSE
BEGIN
SELECT TO_NUMBER(STR) INTO V_STR FROM DUAL;
EXCEPTION
WHEN INVALID_NUMBER THEN
RETURN 0;
END;
RETURN 1;
END IF;
END ISNUMERIC;
2. 利用 ISNUMERIC
CREATE OR REPLACE FUNCTION ISNUMERIC(STR IN VARCHAR2) RETURN NUMBER IS
BEGIN
IF STR IS NULL THEN
RETURN 0;
ELSE
IF REGEXP_LIKE(STR, '(^[+-]?\d{0,}\.?\d{0,}$)') THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END IF;
END ISNUMERIC;
3. 利用 TRANSLATE
CREATE OR REPLACE FUNCTION ISNUMERIC(STR IN VARCHAR2) RETURN NUMBER IS
V_STR VARCHAR2(1000);
BEGIN
IF STR IS NULL THEN
RETURN 0;
ELSE
V_STR := TRANSLATE(STR, '.0123456789', '.');
IF V_STR = '.' OR V_STR = '+.' OR V_STR = '-.' OR V_STR IS NULL THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END IF;
END ISNUMERIC;
About Me
.............................................................................................................................................
● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-11-01 09:00 ~ 2017-11-30 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2147825/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript中如何判斷一個字串是否為JSON格式JavaScript字串JSON
- PHP 判斷一個字元是否在字串中PHP字元字串
- java判斷輸入的字串是否為數字Java字串
- C#判斷一個字串是否是數字或者含有某個數字C#字串
- Python判斷字串是否為字母或者數字(浮點數)Python字串
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- 判斷字串是否為空字串
- 如何判斷一個物件是否為空?物件
- C語言:判斷一個字串是否為迴文C語言字串
- linux 中如何判斷變數是否為數值Linux變數
- 判斷一個數是否為質數(程式碼)
- 判斷字串是否唯一字串
- postgresql判斷是否為數字的方法SQL
- JavaScript判斷字串是否為空JavaScript字串
- js判斷字串是否為空JS字串
- java判斷字串是否為空Java字串
- python如何判斷一個數是否是整數Python
- 如何用python判斷列表中是否包含多個字串中的一個或多個?Python字串
- Python中判斷是否為數字字串的方法是什麼?Python字串
- PHP判斷一個字串是否包含亂碼PHP字串
- 如何判斷一個 interface{} 的值是否為 nil ?
- 大神教你如何判斷Python中字串是否為空和nullPython字串Null
- Python:判斷一個正整數是否為迴文數Python
- 如何判斷一個玩法是否合格?
- 如何判斷一個元素是否在可視區域中?
- JS如何判斷一個陣列是否為空、是否含有某個值JS陣列
- C#判斷字串是否為日期格式C#字串
- 如何在Java中判斷是否為空Java
- JavaScript判斷數字是否是質數JavaScript
- 如何判斷一個元素在億級資料中是否存在?
- 判斷URL字串是否合法字串
- 位運算-判斷一個數是否為2的整數次方
- J2SE-判斷字串是否為空字串
- mysql如何判斷是否為空MySql
- JavaScript 中,如何判斷兩個物件是否相等?JavaScript物件
- 如何判斷一個元素文字是否換行?
- python如何判斷一個物件是否是列表Python物件
- 利用棧和隊來判斷輸入的一個字串是否為迴文字串
- 演算法問題——判斷陣列中是否含有某一字串演算法陣列字串