在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寶典今日頭條號地址:
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-11-01 09:00 ~ 2017-11-30 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2147825/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中如何判斷一個字串是否含有漢字(中文)Oracle字串
- 如何判斷一個字串是否為純數字的問題,當然也可以判斷一個字串是否為純字母字串
- PHP 判斷一個字元是否在字串中PHP字元字串
- javascript中如何判斷一個字串是否為JSON格式JavaScript字串JSON
- java判斷輸入的字串是否為數字Java字串
- js判斷一個變數是否為字串型別JS變數字串型別
- C#判斷一個字串是否是數字或者含有某個數字C#字串
- js如何判斷一個變數是否是一個數字JS變數
- 【轉】Java中判斷字串是否為數字的五種方法Java字串
- 判斷某一個字串是否存在另一個字串中字串
- Python判斷字串是否為字母或者數字(浮點數)Python字串
- Java 判斷字串中是否含有漢字.Java字串
- javascript判斷一個變數是否是數字JavaScript變數
- js如何判斷一個變數值是否為undefinedJS變數Undefined
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- 如何在js中判斷是否包含某個字串JS字串
- 關於字串的一些常用判斷 是否全部為數字 是否包含有數字 是否包含有英文字串
- 判斷字串是否為空字串
- Java判斷一個整數是否為奇數Java
- 判斷一個數是否為質數(程式碼)
- js判斷引數是否為非數字JS
- js判斷一個變數是否為空JS變數
- postgresql判斷是否為數字的方法SQL
- C語言:判斷一個字串是否為迴文C語言字串
- linux 中如何判斷變數是否為數值Linux變數
- js如何判斷一個變數是數字還是數字字串JS變數字串
- 如何判斷一個物件是否為jQuery物件物件jQuery
- javascript如何判斷一個變數是否宣告JavaScript變數
- js判斷字串是否為空JS字串
- JavaScript判斷字串是否為空JavaScript字串
- java判斷字串是否為空Java字串
- 判斷字串是否唯一字串
- python如何判斷一個數是否是整數Python
- javascript如何判斷一個變數是否是整數JavaScript變數
- js如何判斷字串中是否含有指定字元JS字串字元
- js如何判斷字串中是否包含指定的子字串JS字串
- 如何判斷一個物件是否在指定物件的原型鏈中物件原型
- js如何判斷一個變數是否具有值JS變數