【DB笔试面试458】在Oracle中,如何判断一个字符串是否全为数字?
2021/4/16 2:26:25
本文主要是介绍【DB笔试面试458】在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;
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
---------------优质麦课------------
详细内容可以添加麦老师微信或QQ私聊。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
这篇关于【DB笔试面试458】在Oracle中,如何判断一个字符串是否全为数字?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享