Table A
ID ID_Descr
1 'DUP 8002061286'
2 'DUP 8002082667 '
3 ' 8002082669 DUP'
我想从 ID_Descr 字段中提取字符串,条件如下:
- 字符串总是以 8 开头
- 字符串长度始终为 10 位
这意味着剥离字符串左右两侧的所有内容(例如,'8002082669')。我怎样才能做到这一点?使用 REGEXP_SUBSTR?
我正在使用 Oracle 11g。
谢谢!
Table A
ID ID_Descr
1 'DUP 8002061286'
2 'DUP 8002082667 '
3 ' 8002082669 DUP'
我想从 ID_Descr 字段中提取字符串,条件如下:
这意味着剥离字符串左右两侧的所有内容(例如,'8002082669')。我怎样才能做到这一点?使用 REGEXP_SUBSTR?
我正在使用 Oracle 11g。
谢谢!
虽然你可以使用regexp_substr()
这个,但我会采取不同的方法。我只是寻找'8'
使用instr()
,然后取接下来的 10 个字符:
select substr(id_descr, instr(id_descr, '8'), 10)
这似乎是最简单的解决方案。
您可以使用,但正则表达式是一项昂贵的操作,因此使用andREGEXP_SUBSTR()
会更好:SUBSTR()
INSTR()
SELECT SUBSTR(ID_Descr, INSTR(ID_Descr, '8'), 10) FROM tableA;
如果你真的想使用REGEXP_SUBSTR()
你可以这样做:
SELECT REGEXP_SUBSTR(ID_Descr, '8.{9}') FROM tableA;
这将8
加上以下 9 个字符(.
作为通配符)。
现在,如果您只想匹配数字,那么REGEXP_SUBSTR()
可能是您最好的选择:
SELECT REGEXP_SUBSTR(ID_Descr, '8[0-9]{9}') FROM tableA;