oracle有没有判断一个字符串都是数字的函数呀

老师让弄,可是不会啊,有没有人有例子... 老师让弄,可是不会啊,有没有人有例子 展开
 我来答
freechan10
2020-02-02 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.8万
展开全部

1、创建测试表,

create table test_num(id varchar2(20),remark varchar2(20));

2、插入测试数据,部分值含回车换行符;

insert into test_num values('123a', '123a');

insert into test_num values('456', '456');

insert into test_num values('78.9', '78.9');

insert into test_num values('-123', '-123');

commit;

3、查询表中全量数据;select t.*, rowid from test_num t;

4、编写语句,只查询字段ID全为数字的记录,可以发现结果中只有一条记录;

   select t.*, rowid sec from test_num t where not regexp_like(id,'\D');

badkano
推荐于2017-11-26 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部

额,正好以前写过一个

oracle本身没有,得自定义一个函数

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;

调用

select isNumber('abc123') from dual
或者
select isNumber('123') from dual

返回值为1,说明是数字,返回值是0,说明里边包含非数字的字符

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
renfengjun1986
2014-01-10 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
采纳数:925 获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:

向TA提问 私信TA
展开全部

用户oracle的正则函数regexp_instr就行了。

select regexp_instr('65','[1-9][0-9]?$') from dual ;


测试:

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表示非数字。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式