【发布时间】:2018-03-16 08:26:14
【问题描述】:
我正在尝试获取括号之间的字符串,但我总是得到空值。
String_Input: select sum(OUTPUT_VALUE) from table_name
Output : OUTPUT_VALUE
我在这里尝试了什么:
select regexp_extract(String_Input,"/\\(([^)]+)\\)/") from table_name;
任何获得价值的建议?
【问题讨论】:
我正在尝试获取括号之间的字符串,但我总是得到空值。
String_Input: select sum(OUTPUT_VALUE) from table_name
Output : OUTPUT_VALUE
我在这里尝试了什么:
select regexp_extract(String_Input,"/\\(([^)]+)\\)/") from table_name;
任何获得价值的建议?
【问题讨论】:
如果你需要获取不带括号的值,你应该指出你需要在regexp_extract函数的第三个参数中提取Captturing group 1的值。此外,您应该删除 / 分隔符,它们被解析为文字符号。
select regexp_extract(String_Input,"\\(([^)]+)\\)", 1) from table_name;
^ ^ ^
'index' 参数是 Java 正则表达式
Matcher group()方法索引。有关“索引”或 Java 正则表达式group()方法的详细信息,请参阅 docs/api/java/util/regex/Matcher.html。
【讨论】:
试试这个:
\((.*?)\)
在蜂巢中:
select regexp_extract(String_input,'\\((.*?)\\)')
from table_name
【讨论】: