oracle数据库中判断非数字并删除

oracle数据库中,有一列数据,形式是数据加符号或汉字,想把其中除了数字以外的都去掉,只留下数字。
如这列内容为123-1324 34141回 821648462()
不知道要用什么函数,直接用replace的话因为符号汉字过多,不能一一替换,求高人指点!
最新回答
听风于野

2024-09-27 07:53:02

创建测试表

create table test
(col varchar2(100));
 
insert into test values ('123-1324');
insert into test values ('34141回');
insert into test values ('821648462()');

 

运行语句

select translate(col, '0' || translate(col, '#0123456789', '#'), '0') from test

 

结果

往事輕如煙

2024-09-27 16:02:03

您可以用正则表达式,语句如下:

select
regexp_replace('1-a111', '[^0-9]')
from dual

有问题,请追问。

︷决戰紫禁之巓︷

2024-09-27 06:26:16

select
regexp_replace('sfs123-1324 34141回 821648462', '[0-9]')
from dual