我正在尝试从字符串中提取下载和上传的速度数字,无法实现,请帮助
输入字符串: My ADSL 14Mbps/2M speed
预期产量:
Download_speed = 14
Upload_speed = 2
我的sql
SELECT regexp_substr('My ADSL 14Mbps/2M speed','[^\/]+') donwload_speed
,regexp_substr('My ADSL 14Mbps/2M speed','[^\/]+$') upload_speed
FROM dual
输出来自上面的sql
download_speed = My Fiber 14Mbps
upload_speed = 2M speed
4条答案
按热度按时间p3rjfoxz1#
你可以用
看到小提琴了吗
这个
(\d+)Mbps/\d+M
模式匹配并将任何一个或多个数字捕获到组1中,然后Mbps/
,然后是1+位数,然后是M
(组值是在最后一个1
参数)。这个
\d+Mbps/(\d+)M
模式匹配任何一个或多个数字,然后Mbps/
,然后将1+个数字捕获到组1中,然后M
.请参阅regex#1演示和regex#2演示。
rsaldnfx2#
我想如果你只想得到数字,我会这样做:
但是,如果您希望将列转置为行,如您在预期结果中所示,我将执行以下操作:
可以更改所需标签的col和va值
arknldoa3#
你只需要提取数字序列
(\d+)
从位置开始1
:下载事件
1
数字序列编码对于上载事件
2
数字序列。以下是sql代码:
9udxz4iz4#
一种选择是使用
REGEXP_REPLACE()
搜索带有替换字符串的数字字符\2
作为第三个论点:演示