我有以下几点 table1
带属性 co
:
|-----------------------------------------
| co
|-----------------------------------------
| fsdsdf "This one" fdsfsd ghjhgj "sfdsf"
| Just This
|-----------------------------------------
如果有引号-我想得到第一次出现的内容。如果没有引号,我想返回的内容是一样的。对于上面的例子:对于第一行- This one
对于第二行- Just This
我在impala中有解决第一种情况的sql代码:
select regexp_extract (co, '"([^"]*")',1) from table1
如何对其进行概括以检测并返回下一个案例所需的结果?
3条答案
按热度按时间bfrts1fy1#
你可以使用
if
函数,并将regex函数放入参数中。所以,zu0ti5jz2#
用活接头检查。
t3irkdon3#
你不能用 Impala 来概括它。就您遇到的问题而言,它需要或|在您的正则表达式中实现。使用regex\u extract,您需要将捕获组编号放在最后。例如
select regexp_extract (co, '"([^"]*")',
1) from table1
但是对于正则表达式中的|操作数,两种情况下的捕获组都必须不同。您不能在regex\u extract方法中定义。假设(a)|(b)是regex,那么第一个case-capture组是1,第二个case-capture组是2。但到目前为止,您不能在regex\u extract语法中同时使用1和2。
一般的regex语法是(我猜这在impala分组中不起作用):
注意抓捕组
在链接中,您将看到“this one”被捕获为第2组,而它也被捕获为第1组