通过从Oracle中的字符串中选择子字符串来填充列

时间:2017-02-10 01:03:53

标签: regex oracle

我在oracle表中有一个列,其值如下:

Column_name
test.123.yen.12345567
abc.234.rau.42525252
eng.111.rai.73540740

现在我在同一个表中有另一列说regex_column。在本专栏中,我想以这样一种方式填充值,即我想从字符串中提取子字符串,直到最后一次出现。

该列的最终结果应如下所示。

regex_column
test.123.yen 
abc.234.rau
eng.111.rai

我们如何使用正则表达式实现这一目标,还是有其他方法可以实现这一目标?

2 个答案:

答案 0 :(得分:2)

一种选择是使用Oracle的基本字符串函数:

SELECT SUBSTR(col, 1, INSTR(col, '.', -1, 1) - 1) AS regex_column
FROM yourTable

您也可以使用正则表达式子字符串。

为了解决@mathguy指出的边缘情况,如果有一个条目根本没有句点,那么对INSTR()的调用将返回0,而SUBSTR()将只返回<列中的em> last 字符。

答案 1 :(得分:0)

使用正则表达式函数regexp_replace的一种方法是:

select 
  regexp_replace(c,'(\.[^.]*$)')
from t;