我正在使用Oracle数据库,我试图在匹配特定模式的字符串中查找并提取所有匹配项...
它应该是3个字母,3个数字,然后可能是一个字母或不是
我试过了:
SELECT REGEXP_SUBSTR(my_column, '[A-Za-z]{3}(\d)(\d)(\d)') AS values
FROM my_table
但它只返回第一次出现。
使用
REGEXP_SUBSTR(my_column, '[A-Za-z]{3}(\d)(\d)(\d)', 0, 0, 'i')
无论是
还是有人有什么想法吗?
修改
我试图从PLSQL文件中提取它。所以它非常像SQL查询,如
select *
from abc123
where some_value = 'some_value'
答案 0 :(得分:1)
尝试此查询以打破 ABC123CDE456FGHI789 squence
ABC123
CDE456
GHI789
<强>输出强>
select regexp_substr('ABC123CDE456FGH789', '[A-Za-z]{3}(\d){3}', 1, i) STR from dual
要获得特定位置,您需要使用
select regexp_substr('ABC123CDE456FGH789', '[A-Za-z]{3}(\d){3}', 1, 1) STR from dual
根据
等位置更改i值ABC123
输出
<link rel="stylesheet" href="..." media="print">
答案 1 :(得分:1)
尝试在 1.2.3 中获取数字(假设它是某个国家/地区的域名)
SELECT str,level,REGEXP_SUBSTR(str, '[0-9]', 1, LEVEL) AS substr
FROM (
SELECT country_domain str from country where regexp_like(country_domain, '[0-9]')
)
CONNECT BY LEVEL <= REGEXP_count(str, '[0-9]');
<强>输出强>
STR LEVEL SUBSTR
1.2.3 1 1
1.2.3 2 2
1.2.3 3 3