如何从SQL select返回匹配的正则表达式?我尝试使用REGEXP_EXTRACT没有运气(功能不可用)。我所做的工作 确实 是这样的:
REGEXP_EXTRACT
SELECT column ~ '^stuff.*$' FROM table;
但这给了我一个对/错的清单。我想知道每种情况下提取的是什么。
如果您试图捕获由表达式产生的正则表达式匹配项,那么substring就可以解决问题:
substring
select substring ('I have a dog', 'd[aeiou]g')
将返回任何匹配项,在这种情况下为“ dog”。
我认为您在上面所做的尝试缺少的链接是,您需要将要捕获的表达式放在括号中。 regexp_matches在这种情况下可以使用(如果您要捕获的表达式周围加上了括号),但是每次匹配都会返回一个文本数组。如果是一场比赛,那就substring很方便了。
regexp_matches
因此,回头看您的示例,如果您尝试返回stuff且仅当它在列的开头时才返回:
stuff
select substring (column, '^(stuff)')
或者
select (regexp_matches (column, '^(stuff)'))[1]