在oracle中使用regexp_substr函数将‘123-456-789'中所有的数字提取出来
时间: 2024-05-19 07:13:26 浏览: 118
可以使用以下语句:
SELECT regexp_substr('123-456-789', '\d+', 1, level) AS num
FROM dual
CONNECT BY regexp_substr('123-456-789', '\d+', 1, level) IS NOT NULL;
解释一下:
- regexp_substr是Oracle中用于正则表达式匹配的函数。
- '\d+'表示匹配一个或多个数字。
- level是用于生成多行结果的伪列,可以从1开始递增。
- CONNECT BY是Oracle中用于生成多行结果的关键字,可以用于生成指定行数的数据。
因此,以上语句会从'123-456-789'中提取所有的数字,每个数字占一行。输出结果如下:
NUM
---
123
456
789
相关问题
在oracle中使用regexp_substr函数将‘123-456-789'提取出来
可以使用以下SQL语句实现:
```
SELECT REGEXP_SUBSTR('123-456-789', '[0-9]+', 1, 1) AS result FROM dual;
```
解释:
- REGEXP_SUBSTR:正则表达式提取函数。
- '123-456-789':需要提取的字符串。
- '[0-9]+':正则表达式模式,表示匹配一个或多个数字。
- 1:开始搜索的位置,从1开始。
- 1:表示匹配模式的第一个子表达式。
执行以上SQL语句,将会返回结果:
```
result
-------
123
```
在oracle中使用regexp_substr函数和非捕获组,将‘123-456-789'中所有的数字提取出来
可以使用以下语句:
SELECT REGEXP_SUBSTR('123-456-789', '\d+', 1, LEVEL) AS NUMBERS
FROM DUAL
CONNECT BY REGEXP_SUBSTR('123-456-789', '\d+', 1, LEVEL) IS NOT NULL;
解释一下:
- REGEXP_SUBSTR('123-456-789', '\d+', 1, LEVEL) 表示在字符串 '123-456-789' 中匹配连续的数字,返回第 LEVEL 个匹配的结果。
- '\d+' 表示匹配一个或多个数字。
- LEVEL 表示一个伪列,从 1 开始依次递增。CONNECT BY 表示以 LEVEL 为基础生成行。
- IS NOT NULL 表示只要匹配结果不为空,就继续生成行。
这样就可以将字符串中所有的数字提取出来了。
阅读全文