Oracle REGEXP_SUBSTR -在基于列值的字符串和符号之间提取值

hs1ihplo  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(174)

我有以下列,我想用Column 2中的值搜索Column 1,然后提取Column2 || '/'和逗号之间的值。
| 列2| Column2 |
| --| ------------ |
| 040| 040 |
| 050| 050 |
| 060| 060 |
| 零七零| 070 |
| 八零| 080 |
产出
| 列2|产出| Output |
| --|--| ------------ |
| 040|一个| 1 |
| 050|一个| 1 |
| 060|二个| 2 |
| 零七零|一个| 1 |
| 八零|一个| 1 |
我尝试使用Regexp_substr,但不确定如何在Pattern参数中使用Column 2。我想我应该能够用一系列复杂的Substr + Instr来做到这一点,但想知道是否有更好的方法来做到这一点?

imzjd6km

imzjd6km1#

可以使用表达式regexp_substr(column1, column2||'/([^,]*)', 1, 1, null, 1)
060/([^,]*)这样的正则表达式将匹配文字字符串060/及其后面的所有内容,直到第一个逗号(如果出现)。/之后的部分将被捕获到组号1中。
默认情况下,regexp_substr提取完全匹配,但使用提供的参数,它只提取捕获到编号为1的组中的内容(特别是最后一个参数)。regexp_substr的参数详情请点击此处。
小提琴
正则表达式here的演示。

相关问题