我正在尝试解析字符串中的where子句以返回lookup_type的名称。 where子句可以是任何东西。
这就是我目前所拥有的:
select regexp_substr('where lookup_type = ''THE MILK'' ', 'lookup_type(\s*)=(\s*)''(^''*)''')
from dual
出于某种原因,这不起作用。另外我怎样才能从正则表达式返回MILK?
答案 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 :(得分:0)
您可以使用q
表示法(替代引用机制)转义一些引号
SELECT REGEXP_SUBSTR(q'#where lookup_type = 'THE MILK'#',
q'#lookup_type\s*=\s*'([^']+)#', 1, 1, 'i', 1) name
FROM dual ;