Oracle regexp_substr从string中的where子句中检索名称

时间:2018-01-10 15:24:15

标签: regex oracle

我正在尝试解析字符串中的where子句以返回lookup_type的名称。 where子句可以是任何东西。

这就是我目前所拥有的:

select regexp_substr('where lookup_type = ''THE MILK'' ', 'lookup_type(\s*)=(\s*)''(^''*)''')
from dual

出于某种原因,这不起作用。另外我怎样才能从正则表达式返回MILK?

2 个答案:

答案 0 :(得分:2)

您可以使用

select regexp_substr('where lookup_type = ''THE MILK'' ', 'lookup_type\s*=\s*''([^'']+)''', 1, 1, NULL, 1) as result from dual

请参阅online demo

<强>详情

  • lookup_type - 匹配文字子字符串
  • \s*=\s* - 匹配用0 +空格包围的=
  • '' - 匹配'
  • ([^'']+) - 匹配并捕获除'
  • 以外的1个或多个字符
  • '' - 匹配'

答案 1 :(得分:0)

您可以使用q表示法(替代引用机制)转义一些引号

SELECT REGEXP_SUBSTR(q'#where lookup_type = 'THE MILK'#',
              q'#lookup_type\s*=\s*'([^']+)#', 1, 1, 'i', 1) name
FROM   dual  ;

DEMO