【发布时间】:2022-08-03 17:07:59
【问题描述】:
我正在寻找一个查询来选择花括号之间的字符串,我可以在 Oracle SQL 或 PL/SQL 中使用。
这是一个可以使用的示例 TABLE1:
| ID | LIST |
|---|---|
| 1 | Depto:={x1,x2} Code:={house} |
| 2 | Depto:={y1,x1} Code:={house,garden} |
| 3 | Depto:={x1,x2} Code:={house} Depto:={x3,x4} |
| 4 | Code:={house,garden} Depto:={y1,x1} |
预期结果:
| ID | LIST | DEPTO | CODE |
|---|---|---|---|
| 1 | Depto:={x1,x2} Code:={house} |
x1:x2 |
house |
| 2 | Depto:={y1,x1} Code:={house,garden} |
y1:x1 |
house:garden |
| 3 | Depto:={x1,x2} Code:={house} Depto:={x3,x4} |
x1:x2:x3:x4 |
house |
| 4 | Code:={house,garden} Depto:={y1,x1} |
y1:x1 |
house:garden |
我试过这个查询:
SELECT id, list, regexp_substr(list, \'\\Depto:={([^}]+)\\}\', 1,1,NULL,1) AS Depto, regexp_substr(list, \'\\Code:={([^}]+)\\}\', 1,1,NULL,1) AS Code FROM table1
但是通过这个查询,我只提取了第一个字符串。
谢谢。
标签: sql oracle regexp-substr