我在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
我们如何使用正则表达式实现这一目标,还是有其他方法可以实现这一目标?
答案 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;