Oracle SQL - 子串问题

时间:2018-03-09 04:44:19

标签: sql oracle

我有一个字段pattern,该字段中的值为INDI/17-18/6767/KER/787。我想从此字符串中获取6767

我使用了查询

select substr(pattern,12,15) from pattern_table

但我得到的输出是6767/KER/787而不是6767

3 个答案:

答案 0 :(得分:1)

试试这个:

您必须将length作为第3个值,而不是position

SELECT SUBSTR(pattern,12,4) FROM pattern_table

答案 1 :(得分:0)

对于通过分隔符分隔第3个值的通用结果,您可以使用REGEXP_SUBSTR

SQL Fiddle

查询1

SELECT pattern,REGEXP_SUBSTR(pattern, '[^/]+', 1, 3) id
FROM pattern_table

<强> Results

|                  PATTERN |    ID |
|--------------------------|-------|
|  INDI/17-18/6767/KER/787 |  6767 |
| INDI/17-18-19/67/KER/787 |    67 |
| INDI/16-18/67890/KAR/986 | 67890 |

答案 2 :(得分:0)

即使这也将起作用:

SELECT substr('INDI/17-18/6767/KER/787',instr('INDI/17- 
18/6767/KER/787','/',1,2)+1,4) FROM dual;