如何获取字符串的regexp_substr

时间:2015-04-01 09:44:54

标签: sql oracle

在我的表中,包含像

这样的值的行
sample>test Y10, 
Sample> y21 

我希望从所有行中获取类似y10y21的子字符串。我可以知道如何得到它。我尝试使用regexp_substr,Instr但无法找到解决方案。

2 个答案:

答案 0 :(得分:0)

我假设您的列中的字符串由single space分隔。 它将为您提供最后一次出现,将被' '空格

分割
substr(your_string, 1, instr(yourString,' ') - 1)

或者您可以使用regexp_substr

来实现此目的
regexp_substr(your_String, '[^[:space:]]+', 1, -1 )

答案 1 :(得分:0)

假设yxx总是以空格开头,那应该像这样简单:

TRIM(REGEXP_SUBSTR(mycolumn, ' y\d+', 1, 1, 'i'))

上面的正则表达式将抓取y(请注意,它不区分大小写,因此它也会抓取Y),后跟一个不确定数字(一个或多个)的数字。如果您只想抓取两位数,请将\d+替换为\d{2}

另外,请注意它只会出现第一次。多次出现有点复杂,但仍然可以完成。